如何查看Java中垃圾收集的对象?

Lib*_*nek 7 java garbage-collection

请问,有没有办法获取在Java中垃圾收集的对象(它们的变量或至少是类名)的历史记录?

只需添加这些参数(到Oracle JVM)

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
Run Code Online (Sandbox Code Playgroud)

没有以字节为单位提供任何其他内存.这对我来说是非常有限的帮助.感谢所有回复.

注意:添加finilize()方法的解决方法对我来说并不是一个不幸的选择(我无法访问它).

sol*_*dil 5

您可以使用 中的finalize方法Object。该方法在对象即将被 GC 时调用。从这里,您可以记录所需的信息。


Ing*_*gel 4

免责声明:我的公司开发了我在这个答案中推荐的工具。

JProfiler中,您可以转到内存部分中的“记录对象”视图,并将活动模式切换为垃圾收集对象(查看->更改活动模式->垃圾收集对象)。然后您将看到已 GC 的对象的统计信息。

在此输入图像描述

  • 谢谢。JProfiler 看起来很棒,但 450 欧元太贵了 (2认同)