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堆

    标记-整理算法                                                                          

                                                           
  • 相关阅读:
    router.beforeEach、路由元信息、导航守卫与函数式编程
    C++传递不定参函数
    函数式编程-compose与pipe
    玩转redux--从会用到庖丁解牛
    redux沉思录:基于flux、状态管理、函数式编程的前端状态管理框架
    Laravel 框架集成 UEditor 编辑器的方法
    i18n实现前端国际化(实例)
    laravel获取当前认证用户登录
    larave5.6 引入自定义函数库时,报错不能重复定义
    2019教师证教材资料
  • 原文地址:https://www.cnblogs.com/andydlz/p/11226866.html
Copyright © 2011-2022 走看看