垃圾收集器
串行并行并发
串行:Serial、Serial Old
JDK Client模式
-XX:+UseSerialGC
并行:ParNew、Parallel Scanvenge、 Parallel Old
-XX:+UseParNewGC
JDK8默认Parallel Scanvenge、 Parallel Old
-XX:+MaxGCPauseMillis 最大垃圾停顿时间
-XX:GCTimeRatio 垃圾收集时间占总时间的比率1/1+n,0<n<100的整数,默认值99。
-XX:+UseAdptiveSizePolicy GC自适应的调节策略
并发:CMS、G1
-XX:+UseConcMarkSweepGC (默认使用ParNew)
-XX:+UseCMSCompactAtFullCollection Full GC后,进行一次碎片整理
-XX:+CMSFullGCsBeforeCompaction 设置进行几次Full GC后,进行一次碎片整理
-XX:ParallelCMSThreads 设定CMS的线程数量(一般情况约等于可用CPU数量)
-XX:+UseG1GC
-XX:InitiatingHeapOccupancyPercent 当整个Java堆的占用率达到参数值时,开始并发标记阶段;默认为45
-XX:MaxGCPauseMillis 为G1设置暂停时间目标,默认值为200毫秒
-XX:G1HeapRegionSize 设置每个Region大小,范围1MB到32MB;目标是在最小Java堆时可以拥有约2048个Region
吞吐量与停顿时间适用场景
吞吐量优先:交互少,计算多,后台运算场景。
停顿时间优先:交互多,响应速度要求高。
jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)
jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)
jdk1.9 默认垃圾收集器G1
--------------------------------------------------------------------------------
查看java版本的默认垃圾收集器
java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=134217728 -XX:MaxHeapSize=2147483648 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
--------------------------------------------------------------------------------
查看内存分布
java -XX:+PrintGCDetails -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
Heap
PSYoungGen total 38400K, used 1331K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
eden space 33280K, 4% used [0x0000000795580000,0x00000007956cce48,0x0000000797600000)
from space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
to space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
ParOldGen total 87552K, used 0K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
object space 87552K, 0% used [0x0000000740000000,0x0000000740000000,0x0000000745580000)
Metaspace used 2216K, capacity 4480K, committed 4480K, reserved 1056768K
class space used 243K, capacity 384K, committed 384K, reserved 1048576K