摘要
本文记录GC调试的一次实验过程和结果。
GC知识要点回顾
问题1:为什么要调试GC参数?
在32核处理器的系统上,10%的GC时间导致75%的吞吐量损失。所以在大型系统上,调试GC是以小博大的不错选择。'
small improvements in reducing such a bottleneck can produce large gains in performance.'
问题2:怎么样调试GC?
调试GC,有
三个主要的参数:
选择合适的GC Collector
整个JVM Heap堆的大小
Young Generation的大小(-Xmn?m or -XX:NewRatio=?)
问题3:有哪些不同的GC Collector?
GC shortname
Generation
Command line parameter
Comment
Copy
Young
-XX:+UseSerialGC
The Copying collector
MarkSweepCompact
Tenured
-XX:+UseSerialGC
The Mark and Sweep Compactor
ConcurrentMarkSweep
Tenured
-XX:+UseConcMarkSweepGC
The Concurrent Mark and Sweep Compactor
ParNew
Young
-XX:+UseParNewGC
The parallel Young Generation Collector — can only be used with the Concurrent mark and sweep compactor.
PS Scavenge
Young
-XX:+UseParallelGC
The parallel object scavenger
PS MarkSweep
Tenured
-XX:+UseParallelGC
The parallel mark and sweep collector
简而言之,Young和Tenured各种三种Collector,分别是
Serial 单线程
Parallel 多线程并行, GC线程和App线程取一运行&#x