《JVM G1源码分析和调优》 —2.7 日志解读

举报
华章计算机 发表于 2019/12/20 13:35:16 2019/12/20
【摘要】 本节书摘来自华章计算机《JVM G1源码分析和调优》 一书中第2章,第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指定的默认值。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。