《JVM G1源码分析和调优》 —2.7 日志解读
2.7 日志解读
如果启动JVM的时候我们没有指定参数,则可以通过设置Java -XX:+Print
CommandLineFlags这个参数让JVM打印出那些已经被用户或者JVM设置过的详细的XX参数的名称和值。例如我们可以得到JVM使用的默认垃圾收集器,如下所示:
-XX:InitialHeapSize=266930688 -XX:MaxHeapSize=4270891008
-XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers
-XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation
-XX:+UseParallelGC
如果指定G1作为垃圾回收,但是没有指定堆空间的参数,当发生GC的时候,我们可以看到:
-Xmx256M -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions
-XX:G1LogLevel=finest -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
-XX:+UseAdaptiveSizePolicy
garbage-first heap total 131072K, used 37569K [0x00000000f8000000,
0x00000000f8100400, 0x0000000100000000)
region size 1024K, 24 young (24576K), 0 survivors (0K)
Eden开始之前是24MB,主要来自于预测值,且24个分区,即每个分区都是1MB。
第一次GC后的堆空间信息如下所示:
[Eden: 24.0M(24.0M)->0.0B(13.0M) Survivors: 0.0B->3072.0K Heap:
24.0M(128.0M)->12.9M(128.0M)]
GC之后Eden设置为13M,来自于256M×5% = 12.8MB,取整后就是13MB,并且满足预测时间。其中,256M是堆的大小,5%是G1 NewSizePercent指定的默认值。
- 点赞
- 收藏
- 关注作者
评论(0)