g1 gc日志分析

gc 日志如何查看可以使用哪些策略指定对应的gc type , 打印gc日志information并输出到文件中 。如何将gc 日志打开到tomcat的bin的目录下,在命令vicatalina.sh中,然后添加到文件中作为Java _ opts xms 128 MMX 256 MMX Mn 100 mxx:maxperm size 30 MX loggc:/usr/local/Tomcat/logs/gc,$ $.log/ -1/打开后 , 只要启动tomcat,就可以在目录中生成/ -1/的日志的日志的内容 。

1、JVM技术详解:常见的GC算法(Parallel/CMS/G1学习完GC算法的相关概念后,我们将介绍这些算法在JVM中的具体实现 。首先要记住的是,大多数JVM需要使用两种不同的GC算法,一种用于清理年轻一代,另一种用于清理老一代 。我们可以选择JVM内置的各种算法 。如果没有通过参数显式指定垃圾收集算法 , 将使用相应JDK版本的默认实现 。本章将详细介绍各种算法的实现原理 。串行GC对年轻一代使用markcopy算法,对老一代使用marksweepcompact算法 。

所以这种GC算法不能充分利用多核CPU 。无论有多少个CPU核心,JVM在垃圾收集中只能使用一个核心 。要启用这个收集器,只需要指定一个JVM启动参数,这个参数对年轻一代和老一代都有效:这个选项只适用于拥有几百MB堆内存的JVM , 当它是单核CPU的时候很有用 。对于服务器端,因为一般有多个CPU核 , 所以除非真的需要限制JVM使用的资源,否则不建议使用 。

2、JVMG1混合回收(mixedGC公文:成功完成并发标记周期后,g1 gc从执行年轻代回收切换到执行混合回收 。在混合回收中 , g1 gc你可以选择在被设定为回收的伊甸园和幸存者区域中加入一些老年区域 。添加的老年人区域的确切数量由几个标志控制 。g1 gc在回收足够数量的老龄区域(通过多次混合回收)后 , g1将继续执行年轻代回收 , 直到下一个并发标记周期完成 。我们知道年轻一代回收就是把年轻一代的所有活体复制到幸存者的特定区域(Survivorto),然后剩下的Eden和Survivorfrom都可以回收清理 。
【g1 gc日志分析】
3、G1GC垃圾收集流程从GC算法来看,G1选择的是复合算法,可以简化为:在分配一般对象(非巨型对象)时,当所有edenregion达到最大阈值 , 无法申请到足够的内存时,就会触发一次YoungGC 。每次young gc回收所有Eden和幸存者区域 , 并将幸存对象复制到旧区域和幸存者区域的另一部分 。

    推荐阅读