首页 > 编程知识 正文

垃圾收集器为什么用G1,常见的垃圾回收器

时间:2023-05-04 19:45:54 阅读:14927 作者:2014

并行配合使用: G1,可以充分利用硬件在多CPU、多核环境中的优势,并使用多个cpu(cpu或CPU核)缩短停止时间。 不区分其他收集器本来需要停止执行java线程的GC行为,G1收集器可以同时运行并继续执行java程序。 分代收集:与其他收集器一样,分代收集的概念在G1中仍然保留。 G1无需其他收集器就可以独立管理整个GC堆,但可以不同方式处理新创建的对象,以及已经存活一段时间并经历多次GC的旧对象,提高了手机的效果。 空间整合:与CMS的“标记-清理”算法不同,G1总体上是基于“标记-清理”算法实现的收集器,而局部上是基于复制算法实现的在任何情况下,这两种算法都意味着在G1运行过程中不会出现内存碎片,可以在收集后提供规则的内存空间,这种特殊效果有利于程序的长时间运行。 分配大对象时,由于找不到连续的存储器空间,所以不会领先于下一个GC。 可预测的停顿:是G1相对于cms的另一大优点,减少停顿时间是G1和cms共同关心的问题,但G1可以追求监听停顿,也可以建立可预测的停顿时间模型,用户可以明确指定这几乎是独立的收集区域: G1收集器前进行收集的范围是新生代或整个古老年代,而G1则不然。 G1 java堆的内存布局与其他收集器大不相同,它将整个堆划分为许多独立的区域。 新生代和老年代依然保留,但新生代和老年代不再物理隔离,他们都是部分独立区域的连续集合,G1收集器之所以能建立可靠的停机时间,是有计划的参考:

《深入理解JAVA虚拟机》

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。