zoukankan      html  css  js  c++  java
  • java虚拟机不同收集器对比

    收集器名称 作用区域 采用算法 单/多线程 优点 缺点 备注
    Serial收集器 新生代 复制算法

    单线程 简单高效,对于限定的单个cpu环境来说,没有线程交互的开销 垃圾收集时必须暂停所有其他工作线程,直到它收集结束,对于很多应用难以接受 是虚拟机运行在client模式下默认的新生代收集器
    ParNew收集器 新生代 复制算法 多线程 除了Serial收集器外,只有它可以和CMS收集器配合工作   是运行在server模式下虚拟机中首选的新生代收集器
    Parallel Scavenge收集器 新生代 复制算法 并行多线程 可控吞吐量,可设置最大垃圾收集停顿时间和吞吐量大小,可设置GC自适应调节策略   主要适合在后台运算而不需要太多交互的任务
    Serial Old收集器 Serial收集器的老年代版本 标记-整理算法 单线程     主要意义是给Client模式下的虚拟机使用
    Parallel Old收集器 Parallel Scavenge老年代版本 标记-整理算法 多线程     注重吞吐量和cpu资源敏感的场合 可以优先考虑Parallel Scavenge+Parallel Old收集器
    CMS收集器 老年代 标记-清除算法 多线程 并发收集,低停顿

    1.对于cpu资源敏感;cms默认开启的回收线程是:(cpu数量+3)/4,当cpu数量少于4个时,需要用一半左右的cpu资源回收垃圾,造成用户程序线程执行缓慢。

    2.产生浮动垃圾,垃圾收集阶段用户线程在执行并产生浮动垃圾,需要预留内存空间给用户线程,如果空间不够会发生concurrent mode failure,启用备用方案serial old进行垃圾收集,停顿时间会增长

    3.大量空间碎片产生,内存不连续无法分配大对象容易提前触发full gc

     
    G1收集器 整个java堆

    标记-整理算法                                                                          

                                                           
  • 相关阅读:
    log4j(七)——log4j.xml简单配置样例说明
    log4j(六)——log4j.properties简单配置样例说明
    三元运算符注意事项
    单精度浮点数操作
    反转链表算法Java实现
    VBS计时器2
    肖申克的救赎影评
    计算机中K到底是1000还是1024?
    二进制补码除法——计算机底层整数除法模拟之Java实现
    VBS计时器
  • 原文地址:https://www.cnblogs.com/andydlz/p/11226866.html
Copyright © 2011-2022 走看看