JVM内存模型与垃圾回收 (2)

      并行垃圾回收器也叫做 throughput collector 。它是JVM的默认垃圾回收器。与串行垃圾回收器不同,它使用多线程进行垃圾回收。当执行垃圾回收的时候,它也会冻结所有的应用程序线程。

3.并发标记扫描垃圾回收器(CMS Garbage Collector)

      并发标记垃圾回收使用多线程扫描堆内存,标记需要清理的实例并且清理被标记过的实例。并发标记垃圾回收器只会在下面两种情况持有应用程序所有线程。

      - 当标记的引用对象在tenured区域;

      - 在进行垃圾回收的时候,堆内存的数据被并发的改变。

      相比并行垃圾回收器,并发标记扫描垃圾回收器使用更多的CPU来确保程序的吞吐量。如果我们可以为了更好的程序性能分配更多的CPU,那么并发标记上扫描垃圾回收器是更好的选择相比并发垃圾回收器。

      通过JVM参数 XX:+USeParNewGC 打开并发标记扫描垃圾回收器。

4.G1垃圾回收器(G1 Garbage Collector)

      G1垃圾回收器适用于堆内存很大的情况,他将堆内存分割成不同的区域,并且并发的对其进行垃圾回收。G1也可以在回收内存之后对剩余的堆内存空间进行压缩。并发扫描标记垃圾回收器在STW情况下压缩内存。G1垃圾回收会优先选择第一块垃圾最多的区域

      通过JVM参数 –XX:+UseG1GC 使用G1垃圾回收器

Java 8 的新特性

      在使用G1垃圾回收器的时候,通过 JVM参数 -XX:+UseStringDeduplication 。 我们可以通过删除重复的字符串,只保留一个char[]来优化堆内存。这个选择在Java 8 u 20被引入。

JVM内存模型与垃圾回收

 六、垃圾回收的JVM配置 运行的垃圾回收器类型 配置 描述
-XX:+UseSerialGC   串行垃圾回收器  
-XX:+UseParallelGC   并行垃圾回收器  
XX:ParallelGCThreads=  

并行垃圾回收器,线程数

 
-XX:+UseConcMarkSweepGC  

并发标记扫描垃圾回收器

 
-XX:ParallelCMSThreads=   并发标记扫描垃圾回收器,线程数  
-XX:+UseG1GC   G1垃圾回收器  
GC的优化配置 配置 描述
-Xms   初始化堆内存大小  
-Xmx   堆内存最大值  
-Xmn   新生代大小  
-XX:PermSize   初始化永久代大小  
-XX:MaxPermSize   永久代最大容量  

 

参考文章

1.https://www.cnblogs.com/wjtaigwh/p/6635484.html

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

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