前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题30:垃圾收集器——并行回收器

面试题30:垃圾收集器——并行回收器

作者头像
爪哇缪斯
发布2023-05-09 21:39:15
1350
发布2023-05-09 21:39:15
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯

【ParNew回收器】

  • -XX:+UseParNewGC

新生代使用ParNew回收器,老年代使用串行回收器。

  • -XX:+UseConcMarkSweepGC

新生代使用ParNew回收器,老年代使用CMS回收器。

  • 是一个新生代的回收器,也是一个独占式的回收器,它与串行回收器唯一不同的,就是它采取并发方式执行GC。
  • 大家一定要注意一点,就是在cpu核数少的机器,它的性能很可能比串行回收器差。
  • -XX:ParallelGCThreads指定并行GC的线程个数,最好与CPU个数一致,否则会影响垃圾回收性能。

默认情况下,当CPU数量少于等于8个的时候,并行线程数为8个。如果CPU数量大于8,并行线程数量为 3+(5*cpu_nums/8)

  • 操作示例:
代码语言:javascript
复制
muse@muse:/Users/muse/Desktop> jinfo -flag ParallelGCThreads 11303                                
-XX:ParallelGCThreads=8

【ParallelGC回收器(关注吞吐量)】

  • -XX:+UseParallelGC

新生代使用ParallelGC回收器,老年代使用串行回收器

  • -XX:+UseParallelOldGC

新生代使用ParallelGC回收器,老年代使用ParallelOldGC收器

  • 查询是否使用了该回收器
代码语言:javascript
复制
muse@muse:/Users/muse/Desktop> jinfo -flag UseParallelGC 11303                                   
-XX:-UseParallelGC
  • 它也是新生代的回收器,也采用的复制算法执行GC回收任务。它与ParNew有一个不同点就是,它提供了一些设置系统吞吐量的参数用来控制GC行为。
  • -XX:MaxGCPauseMillis 最大的垃圾收集暂停时间,它是一个大于0的整数,ParallelGC会根据设置的值来调整堆的大小和其他jvm参数,使其把GC停顿时间控制在MaxGCPauseMillis之内,但是,大家要注意,如果将值设置很小,虽然停顿时间小了,却造成初始化的堆也变小了,垃圾回收会变得很频繁。
代码语言:javascript
复制
muse@muse:/Users/muse/Desktop> jinfo -flag MaxGCPauseMillis 11303                                 
-XX:MaxGCPauseMillis=200
  • -XX:GCTimeRatio 设置吞吐量大小,可设置的值为0~100之间的整数。什么意思呢?就是说它影响的是垃圾回收时间,通过1/(1+n)来计算,假设n=99,那么1/(1+99)=1%,也就是说,系统会花费小于1%的时间用于垃圾回收。
代码语言:javascript
复制
muse@muse:/Users/muse/Desktop> jinfo -flag GCTimeRatio 11303                               
-XX:GCTimeRatio=12
  • -XX:+UseAdaptiveSizePolicy 如果你不倾向手动设置上面的参数,可以采用把参数调整交由虚拟机自动设置
代码语言:javascript
复制
muse@muse:/Users/muse/Desktop> jinfo -flag UseAdaptiveSizePolicy 11303                             
-XX:+UseAdaptiveSizePolicy

【ParallelOldGC回收器(关注吞吐量)】

  • -XX:+UseParallelOldGC

新生代使用ParallelGC回收器,老年代使用ParallelOldGC收器

  • 查询是否使用了该回收器
代码语言:javascript
复制
muse@muse:/Users/muse/Desktop> jinfo -flag UseParallelOldGC 11303                                
-XX:-UseParallelOldGC
  • 它跟ParallelGC相似,也是关注于吞吐量的收集器。
  • 从名字看,它比ParallelGC多了个Old,其实就表示它是一个应用于老年代的回收器。
  • 可以与ParallelGC搭配使用,即:ParallelGC(新生代收集器)+ ParallelOldGC(老年代收集器)
  • 它采用标记压缩算法进行GC操作。也可以使用-XX:ParallelGCThreads来指定并行GC的线程个数。
代码语言:javascript
复制
muse@muse:/Users/muse/Desktop> jinfo -flag ParallelGCThreads 11303                       
XX:ParallelGCThreads=8
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【ParNew回收器】
  • 【ParallelOldGC回收器(关注吞吐量)】
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档