GC之ParNew收集器

2019-02-01  本文已影响10人  liuzx32

PS:堆内存是指JVM的内存大小包括堆区和非堆区;
-server 服务器模式运行,-client表示客户端运行模式;
-Xms1G 最小JAVA虚拟机内存1G,是JVM的内存大小而不是堆区的大小;
-Xmx2G 最大JAVA虚拟机内存2G,是JVM的内存大小而不是堆区的大小;

What(是什么)

ParNew收集器是JAVA虚拟机中垃圾收集器的一种。它是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为包括Serial收集器可用的所有控制参数(例如:-XX:SurvivorRatio、-XX:PretenureSizeThreshold、-XX:HandlePromotionFailure等)、收集算法、Stop The World、对象分配规则、回收策略等都与Serial收集器一致。

Why(为什么)

需要注意的是,ParNew在单核甚至双核环境下绝对不会有比Serial收集器更好的效果,但是随着CPU数量的增加ParNew相较于Serial的优势会越来越明显,但并不是成倍增长的,原因还是那个,多线程切换的开销。

How(怎么做)

image.png
补充

ParNew收集器和Serial收集器的差异

ParNew收集器在单CPU的环境中绝对不会有比Serial收集器更好的效果,甚至由于存在线程交互的开销,该收集器在通过超线程技术实现的两个CPU的环境中都不能百分之百地保证能超越Serial收集器。当然,随着可以使用的CPU的数量的增加,它对于GC时系统资源的利用还是很有好处的。它默认开启的收集线程数与CPU的数量相同,在CPU非常多(譬如32个,现在CPU动辄就4核加超线程,服务器超过32个逻辑CPU的情况越来越多了)的环境下,可以使用-XX:ParallelGCThreads参数来限制垃圾收集的线程数。

并行和并发的区别

[GC [ParNew 表示新生代使用的是ParNew收集器。
[GC [DefNew 表示新生代使用的是Serial收集器。

上一篇下一篇

猜你喜欢

热点阅读