先 dump 一份jfr记录文件,<ahref='./JFR_0_初识Java%20Flight%20Record.md'target='_blank'>上一篇文章</a>有介绍具体的操作方法,建议利用 begin 还有 end 参数截取你感兴趣的时间段,控制一下jfr文件的大小。然后再回到jmc里通过【文件】/【打开文件】/【选择dump的jfr文件】打开。由于jfr文件里的数据要导入内存,然后生成索引和报表,实际内存占用大概是原始文件的4~6倍左右。如果你的系统内存不足,JMC会提示你只截取一部分查看。
在G1中**大于 region 50%**的对象视为大对象,频繁分配大对象会导致性能问题。如果 region 里面包含大量的大型对象,则该 region 中**最后一个具有巨型对象的区域**与**区域末端之间的空间**将不会使用,导致堆内存空间碎片化。调整的方法一般是**修改 region 的大小 > 这类大对象的 2 倍以上**。那么这个大对象有多大呢?我们可以通过*Old Object Sample*来查看老对象采样,一般随着你的程序运行时间增长,这个采集会更加准确地命中到你最关注的对象。