• 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堆

    标记-整理算法                                                                          

                                                           
  • 相关阅读:
    [Vue + TS] Using Route events inside Vue
    [Vue + TS] Write a Vue Component as a Class in TypeScript
    [Mobx] Use MobX actions to change and guard state
    [TypeScript] Type check JavaScript files using JSDoc and Typescript 2.5
    一年四个P(Project)
    android之IntentFilter的用法_Intent.ACTION_TIME_TICK在manifest.xml不起作用
    (step7.2.3)hdu 2554(N对数的排列问题——简单数论)
    hdu 1528 Card Game Cheater ( 二分图匹配 )
    SilkTest天龙八部系列5-类的属性
    SilkTest天龙八部系列6-用open agent进行测试
  • 原文地址:https://www.cnblogs.com/andydlz/p/11226866.html
Copyright © 2020-2023  润新知