JVM(完成度95%,不断更新) (8)


然后运行一个程序后,能够看到它的一些初始配置信息

-XX:InitialHeapSize=266376000 -XX:MaxHeapSize=4262016000 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC -XX:+UseParallelGC

移动到最后一句,就能看到 -XX:+UseParallelGC 说明使用的是并行垃圾回收

-XX:+UseParallelGC

垃圾收集器

Java中一共有7大垃圾收集器

UserSerialGC:串行垃圾收集器

UserParallelGC:并行垃圾收集器

UseConcMarkSweepGC:(CMS)并发标记清除

UseParNewGC:年轻代的并行垃圾回收器

UseParallelOldGC:老年代的并行垃圾回收器

UseG1GC:G1垃圾收集器

UserSerialOldGC:串行老年代垃圾收集器(已经被移除)

**

垃圾收集器使用范围

参数说明

DefNew:Default New Generation

Tenured:Old

ParNew:Parallel New Generation

PSYoungGen:Parallel Scavenge

ParOldGen:Parallel Old Generation

G1垃圾收集器各区都能使用

新生代 老年代

- Serial Copying: UserSerialGC,串行垃圾回收器
   

ParNew:UserParNewGC,新生代并行垃圾收集器
- Parallel Scavenge:UserParallelGC,并行垃圾收集器
|
- Serial Old:UseSerialOldGC,老年代串行垃圾收集器

Parallel Compacting(Parallel Old):UseParallelOldGC,老年代并行垃圾收集器

CMS:UseConcMarkSwepp,并行标记清除垃圾收集器

|

image.png


image.png


垃圾收集器组合选择、参数配置

单CPU或者小内存,单机程序

-XX:+UseSerialGC

多CPU,需要最大的吞吐量,如后台计算型应用

-XX:+UseParallelGC(这两个相互激活)

-XX:+UseParallelOldGC

多CPU,追求低停顿时间,需要快速响应如互联网应用

-XX:+UseConcMarkSweepGC

-XX:+ParNewGC


| 参数 | 新生代垃圾收集器 | 新生代算法 | 老年代垃圾收集器 | 老年代算法 |

-XX:+UseSerialGC SerialGC 复制 SerialOldGC 标记整理
-XX:+UseParNewGC   ParNew   复制   SerialOldGC   标记整理  
-XX:+UseParallelGC   Parallel [Scavenge]   复制   Parallel Old   标记整理  
-XX:+UseConcMarkSweepGC   ParNew   复制   CMS + Serial Old的收集器组合,Serial Old作为CMS出错的后备收集器   标记清除  
-XX:+UseG1GC   G1整体上采用标记整理算法   局部复制      


参数配置

image.png


G1垃圾收集器

开启G1垃圾收集器 -XX:+UseG1GC

以前收集器的特点

年轻代和老年代是各自独立且连续的内存块

年轻代收集使用单eden + S0 + S1 进行复制算法

老年代收集必须扫描珍整个老年代区域

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsdps.html