垃圾收集器

垃圾收集器

串行并行并发
  串行: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