zoukankan      html  css  js  c++  java
  • jvm:收集器

    1、Serial收集器

    (1)开启参数:-XX:+UseSerialGC

    (2)过程

    单线程的收集器,它的单线程的意义并不仅仅说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,最重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。

    (3)使用场景:用户桌面

    2、ParNew收集器

    (1)开启参数:-XX:+UseParNewGC

    (2)过程:

    Serial收集器的多线程版本,除了使用多线程的垃圾收集之外,其余行为包括Serial收集器可用的所有执行参数、收集算法、STW(Stop The World)、对象分配规则、回收策略等都与Serial收集器完全一样(只对新生代并行收集,对老年代依旧是单线程收集,收集过程中STW)

    (3)使用场景:服务器

    3、Parallel Scavenge收集器

    (1)开启参数:-XX:+UseParalelGC

    (2)关注点:

    可控的吞吐量,吞吐量计算公式:运行用户代码时间/(运行用户代码时间+垃圾收集时间)停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户体验,而高吞吐量则可以高效率地利用CPU时间,尽快完成程序的运算任务。和ParNew的区别在于,用户可以控制GC的
    Parallel Scavenge提供了两个参数用于精确控制吞吐量(用户代码执行时间/(GC时间+用户代码执行时间))
    -XX:MaxGCPauselMillis                  //最大垃圾收集停顿时间(大于0毫秒数)

    -XX:GCTimeRatio                           //吞吐量大小(大于0且小于100的整数,吞吐量百分比)
    -XX:+UseAdaptiveSizePolicy       //内存调优委托给虚拟机管理

    (3)适用场景:后台计算不需要太多交互

    4、ParalleOld

    对老年代并行收集器的多线程版本

    5、ParaNew

    Serial收集器的多线程版本,其余行为和Serial收集器完全一样

    6、CMS(Concurrent Mark Sweep)

    (1)开启参数:-XX:+UseConcMarkSweepGC

    (2)过程

    CSM收集器是一种以获取最短回收停顿时间为目标的收集器,分为四步:初始标记(STW)、并发标记、重新标记(STW)、并发清除

    特点:

    低停顿

    是基于“标记一清除”算法实现的,经过多次标记才会被清除

    -XX:+UseCMSCompactAtFullCollection  GC执行完后做一次整理操作(清理碎片)

    -XX:+CMSFullGCsBeforeCompaction  执行多少次FullGC要做一次整理操作

    (3)使用场景:互联网站或者web服务器

    7、G1收集器

    (1)两种GC模式(两种都是Stop The World的)

    ■Young GC

    扫描根:GC Roots

    更新RemenberSet记录回收对象的数据结构

    检测RemenberSet哪些数据是从年轻代到老年代

    拷贝对象:要么往幸存代,要么往老年代

    清理

    ■Mixed GC

    (2)算法特点

    标记整理、复制算法

    从整体来看是基于“标记一整理”算法实现的收集器,从局部(两个Region之间)上来看是基于“复制”算法实现的

    (3)开启参数

    (4)过程

    G1算法将堆划分为若干个区域(Region),但它仍然属于分代收集器。不过,这些区域的一部分包含新生代,新生代的垃圾收集依然采用暂停所有应用线程的方式,将存活对象拷贝到老年代或者Survivor空间。老年代也分成很多区域,G1收集器通过将对象从一个区域复制到另外一个区域,完成了清理工作。这就意味着,在正常的处理过程中,G1完成了堆的压缩(至少是部分堆的压缩),这样也就不会有CMS内存碎片问题的存在了。



  • 相关阅读:
    FIFO深度计算
    php学习笔记--函数
    php学习笔记--类型转换
    php学习笔记--变量与常量
    css之伪对象-webkit-scrollbar
    8大排序算法
    正则表达式
    SDC Tcl package of Timequest
    面试经历之今日头条
    《Linux高性能服务器编程》学习总结(十三)——多进程编程
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12613824.html
Copyright © 2011-2022 走看看