JAVA语言之JVM的垃圾回收串行、并行、并发等算法总结
小标 2018-12-19 来源 : 阅读 1644 评论 0

摘要:本文主要向大家介绍了JAVA语言之JVM的垃圾回收串行、并行、并发等算法总结,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之JVM的垃圾回收串行、并行、并发等算法总结,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


一、串行


JDK1.5前的默认算法


缺点是只有一个线程,执行垃圾回收时程序停止的时间比较长


语法


-XX:+UseSerialGC


新生代、老年代使用串行回收


新生代复制算法


老年代标记-压缩


示例图



 


测试代码


//-Xmx20m -Xms20m -Xmn2m -XX:+UseSerialGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

       byte[] b = null;

       for (int i = 0; i < 7; i++)

       {

           b = new byte[3 * 1024 * 1024];

       }

   


串行的关键字是DefNew(年轻代)、Tenured(年老代)、Perm(永久代)


0.162: [GC0.162: [DefNew: 1562K->191K(1856K), 0.0030044 secs]


0.165: [Tenured: 15917K->3820K(18432K), 0.0059132 secs] 16922K->3820K(20288K),


[Perm : 2890K->2890K(21248K)], 0.0090042 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]


二、并行


多个线程执行垃圾回收


适合于吞吐量的系统,回收时系统会停止运行


语法


-XX:+UseParNewGC(新生代使用并行收集器,老年代使用串行回收收集器)


关键字(ParNew)


-XX:+UseParallelGC(新生代使用并行回收收集器,老年代使用串行收集器)


-XX:+UseParallelOldGC(新生代,老年代都使用并行回收收集器)


关键字(PSYoungGen)


-XX:+UseConcMarkSweepGC(新生代使用并行收集器,老年代使用CMS)


-XX:ParallelGCThreads 限制并行线程数量


-XX:MaxGCPauseMills ?GC最大停顿毫秒数


-XX:GCTimeRatio 垃圾回收占用的CPU时间比例,默认99代表最大运行1%时间做GC


新生代复制算法


老年代标记-压缩


示例图



 


UseParNewGC?代码同串行,年轻代并行,年老代串行?


-Xmx20m -Xms20m -Xmn2m -XX:+UseParNewGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps


0.193: [GC0.193: [ParNew: 1601K->192K(1856K), 0.0093101 secs]0.202: [Tenured: 15948K->3834K(18432K), 0.0060758 secs] 16961K->3834K(20288K), [Perm : 3144K->3144K(21248K)], 0.0154452 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]


UseParallelGC 功能同UseParNewGC


UseParallelOldGC 代码同串行,年轻代、年老代都并行


0.141: [GC [PSYoungGen: 1024K->488K(1536K)] 1024K->624K(19968K), 0.0166419 secs] [Times: user=0.03 sys=0.00, real=0.02 secs]


0.212: [GC [PSYoungGen: 1012K->504K(1536K)] 16509K->16157K(19968K), 0.0019856 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


0.215: [GC [PSYoungGen: 504K->504K(1536K)] 16157K->16181K(19968K), 0.0029741 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


0.218: [Full GC [PSYoungGen: 504K->0K(1536K)] [ParOldGen: 15677K->3810K(18432K)] 16181K->3810K(19968K) [PSPermGen: 2891K->2890K(21504K)], 0.0133807 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]


三、并发


系统和垃圾回收一起执行,系统不会暂停


适合于响应要求高的系统,回收时系统不会停止运行


语法


-XX:+UseConcMarkSweepGC(设置年老代为并发收集,年轻代并行,适合于响应要求高的系统)


0.206: [GC0.206: [ParNew: 1603K->192K(1856K), 0.0038214 secs]0.210: [CMS: 15945K->3836K(18432K), 0.0084133 secs] 16963K->3836K(20288K), [CMS Perm : 3120K->3119K(21248K)], 0.0123102 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]


Pid is:8008


标记-清除算法


2.217: [GC [1 CMS-initial-mark: 9980K(18432K)] 10450K(20288K), 0.0005452 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


2.225: [CMS-concurrent-mark-start]


2.239: [CMS-concurrent-mark: 0.014/0.014 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]


2.239: [CMS-concurrent-preclean-start]


2.240: [CMS-concurrent-preclean: 0.001/0.001 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


2.240: [GC[YG occupancy: 469 K (1856 K)]2.240: [Rescan (parallel) , 0.0002922 secs]2.241: [weak refs processing, 0.0000111 secs]2.241: [scrub string table, 0.0001527 secs] [1 CMS-remark: 9980K(18432K)] 10450K(20288K), 0.0005009 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


2.241: [CMS-concurrent-sweep-start]


2.241: [CMS-concurrent-sweep: 0.000/0.000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


2.241: [CMS-concurrent-reset-start]


2.241: [CMS-concurrent-reset: 0.000/0.000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 0
看完这篇文章有何感觉?已经有2人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved