专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

jvm:收集器

1、Serial收集器

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

(2)过程

35_1.png

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

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

2、ParNew收集器

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

(2)过程:

35_2.png

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

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

35_3.png

5、ParaNew

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

35_4.png

6、CMS(Concurrent Mark Sweep)

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

(2)过程

35_5.png

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内存碎片问题的存在了。

文章永久链接:https://tech.souyunku.com/22590

未经允许不得转载:搜云库技术团队 » jvm:收集器

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们