最近我发现它在我的java应用程序中经常有一个年轻的gc。由于我有一个1600M的年轻一代,并且它每10秒做一次年轻的gc,我认为有太多不必要的对象导致这些gcs。
我知道我可以使用jmap来执行heapdump来找出导致完整gc的原因。但是我如何才能找到年轻人中的一些东西(导致一个堆肥应该清理年轻人并且年轻人一直在变化)
另一个问题:jstat -gcutil会增加gc频率吗?
答案 0 :(得分:1)
选项1 - SJK's hh command 它正在使用jmap发动机罩。如果您使用--dead-young运行它,它将执行以下操作。
选项2 - Java Mission Control 它是Java 8 JDK的一部分。它可以在TLAB分配失败时对对象分配进行采样。虽然不准确,但在实践中检测垃圾点非常有用。
jstat -gc
不执行GC,它通过内存映射文件使用信息。 JVM将一些指标转储到该文件,jstat
轮询它。