美文网首页
JVM 收集器简介

JVM 收集器简介

作者: zh_harry | 来源:发表于2020-06-08 14:19 被阅读0次

收集器简介

https://blogs.oracle.com/jonthecollector/our-collectors

收集器 串行、并行or并发 新生代/老年代 算法 目标 适用场景 权威解释
Serial 串行 新生代 复制算法 响应速度优先 单CPU环境下的Client模式 "Serial" is a stop-the-world, copying collector which uses a single GC thread.
Serial Old 串行 老年代 标记-整理 响应速度优先 单CPU环境下的Client模式、CMS的后备预案 "Serial Old" is a stop-the-world,mark-sweep-compact collector that uses a single GC thread.
ParNew 并行 新生代 复制算法 响应速度优先 多CPU环境时在Server模式下与CMS配合 "ParNew" is a stop-the-world, copying collector which uses multiple GC threads. It differs from "Parallel Scavenge" in that it has enhancements that make it usable with CMS. For example, "ParNew" does the synchronization needed so that it can run during the concurrent phases of CMS.
Parallel Scavenge 并行 新生代 复制算法 吞吐量优先 在后台运算而不需要太多交互的任务 "Parallel Scavenge" is a stop-the-world, copying collector which uses multiple GC threads.
Parallel Old 并行 老年代 标记-整理 吞吐量优先 在后台运算而不需要太多交互的任务 "Parallel Old" is a compacting collector that uses multiple GC threads.Using the -XX flags for our collectors for jdk6
CMS 并发 老年代 标记-清除 响应速度优先 集中在互联网站或B/S系统服务端上的Java应用 "CMS" is a mostly concurrent, low-pause collector
G1 并发 both 标记-整理+复制算法 响应速度优先 面向服务端应用,将来替换CMS

JVM 对应选项的回收器组合

  • UseSerialGC is "Serial" + "Serial Old"
  • UseParNewGC is "ParNew" + "Serial Old"
  • UseConcMarkSweepGC is "ParNew" + "CMS" + "Serial Old". "CMS"is used most of the time to collect the tenured generation. "Serial Old" is used when a concurrent mode failure occurs.
    why https://stackoverflow.com/questions/39569649/why-is-cms-full-gc-single-threaded?from=timeline&isappinstalled=0 简单翻译一下:因为开发人员的精力都在G1上,而且 CMS发现FULL GC的情况很少,另外每个回收器的内存实现很复杂,不能简单地进行兼容,需要开发。所以没有支持para old,但已经提了patch,只不过没有快实现
  • UseParallelGC is "Parallel Scavenge" + "Serial Old"
  • UseParallelOldGC is "Parallel Scavenge" + "Parallel Old"

JDK版本默认垃圾收集器

jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Serial Old(老年代)
jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Serial Old(老年代)
jdk1.9 默认垃圾收集器G1
jdk10 默认垃圾收集器G1
-XX:+PrintCommandLineFlags jvm参数可查看默认设置收集器类型

 java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=132435328 -XX:MaxHeapSize=2118965248 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

常用的收集器组合

image.png
https://blogs.oracle.com/jonthecollector/our-collectors image.png

再谈引用

小哥的公司和正常的公司发展没有多大不一样,客户关系越来越复杂,有的客户很不规矩,经常把人介绍进来,然后忘了带走,扫地阿姨不敢给赶走,因为不确定这哥们会不会还有用。时间一长,这种客户越来越多,办公区域又不够了。这种情况有两种,一种是VIP区域中没有关系的用户,这种用户当VIP区域的扫地阿姨发现空间不足时,会被清掉!但如果这种用户太多,也会增阿姨的负责,阿姨清扫的时间长,影响客户体验。
第二种是到VIP区域后依赖有关系的用户,老板的亲戚。解决这种问题的办法从根源上杜绝走后门。比如ThreadLocal 的remove()方法。
深入thread local 本质
https://www.jianshu.com/p/fca69ba27de6

相关文章

  • JVM 收集器简介

    收集器简介 https://blogs.oracle.com/jonthecollector/our-collec...

  • JVM垃圾收集器简介

    垃圾收集基础概念 垃圾回收器的简单工作流程 标记出哪些对象是存活的,哪些是可回收的垃圾 进行回收(清除/复制/整理...

  • JVM

    JVM(1):Java 类的加载机制 JVM(2):JVM内存结构 JVM(3):Java GC算法 垃圾收集器 ...

  • Jvm设置

    Jvm 常用配置 收集器设置 -XX:+UseSerialGC:设置串行收集器 -XX:+UseParallelG...

  • java中jvm垃圾收集器简单介绍

    jvm垃圾收集器(新生代) serial收集器 serial收集器是最基本、发展历史最悠久的收集器,jdk1.3....

  • JVM垃圾收集器和垃圾收集算法分别有哪些?

    JVM垃圾收集器 Serial收集器 Serial收集器是最基本,发展最悠久的收集器,在JDK1.3.1之前是虚拟...

  • Java JVM G1垃圾回收器

    JVM提供了Serial收集器,Parallel收集器和CMS(Concurrent Mark-Sweep)并发标...

  • G1收集器详解

    详解 JVM Garbage First(G1) 垃圾收集器 G1垃圾收集器入门

  • JVM-GC(2)

    JVM-GC(2) 垃圾收集器 CMS收集器 CMS收集器是一种以获取最短回收停顿时间为目标的收集器。CMS收集器...

  • 2020互联网Java后端面试专题解析—JVM21题

    前言 文章对 JVM 内存区域分布、JVM 内存溢出分析、JVM 垃圾回收算法/垃圾收集器、JVM 性能调优工具及...

网友评论

      本文标题:JVM 收集器简介

      本文链接:https://www.haomeiwen.com/subject/bfxrtktx.html