分析GCs之间由Java应用程序生成的对象

是否有一个工具可用于分析在两个单独的垃圾收集运行之间创建的对象(=创建的对象数量及其类型)?

Heapdumps在这里没有真正工作,因为他们在调用时执行GC(或者至少是我到目前为止每次都观察到的),我想看看GC收集了哪些对象,而不是在GC运行后留下哪些对象,如果这是有道理的.

最佳答案 首先,当您在每次堆转储之前总是观察到完整的垃圾收集时,您可能会这样调用它:

jmap -histo:live $PID

如果是这种情况,只需省略:live,这将禁止显式垃圾收集.

此外,Sun JVM还知道以下命令行选项:

-XX:+PrintClassHistogramBeforeFullGC -XX:+PrintClassHistogramAfterFullGC

这应该是你想要的.

点赞