有没有实时查看JVM堆内存中对象变化的软件?

Is there a software for viewing changes in objects in the JVM heap memory in real time?

假设您有一个 运行 Java 应用程序,您想要检查单击按钮更改了哪些对象属性以及 JVM 堆内存中的位置。在一个小程序中,您可以逐步调试点击,但如果它是一个非常大的程序,这可能会花费很多时间。那么有没有一个JVM监视器可以记录和显示这样的事件发生后堆中的变化。我知道我可以在事件前后进行堆转储然后进行比较,但我想问一下是否有更智能的方法。类似于 Windows 的 RegMon 或 Filemon,但用于 Java JVM。谢谢:)

实际上采用堆转储 'is' 智能方式,因为必须了解(尤其是在 GUI 框架中)单击会改变很多,而不仅仅是按钮参数。

这涉及到很多东西。 您可能想要使用内置的 Eclipse 调试器,它允许您跟踪特定变量以及整个对象的变化。

如果您对内部结构更感兴趣,我可以推荐默认捆绑在 jdk 中的 jvisualvm。它将附加到热点 JVM 实例以监视其内部。

或者:

您可以按照 Jitsu 的建议使用堆转储并尝试学习那些堆转储。

其他方式有:

Eclipse Memory Analyzer: Java 帮助您发现内存泄漏并减少内存消耗的堆分析器

VisualVM & JConsole:它提供了很好的 UI 来分析你的 jvm 内存

JStat: 是一个java虚拟机统计和监控工具

Netbeans Profiler:与 Netbeans 一起提供,可以对您的应用程序进行分析

JProfiler:这是一个付费工具,可以让您更深入地了解 java 应用程序分析以分析内存。

FusionReactor:另一个付费工具,可实时洞察生产环境中的 java 应用程序 运行 以分析代码、内存和线程。