假设您有一个正在运行的 Java 应用程序,并且您想要检查单击按钮会更改哪些对象属性以及 JVM 堆内存中的位置。在一个小程序中,您可以逐步调试单击,但如果它是一个非常大的程序,这可能需要很多时间。那么是否有一个 JVM 监视器可以记录并显示此类事件发生后堆中的变化。我知道我可以在事件发生之前和之后进行堆转储,然后进行比较,但我想问是否有更智能的方法。类似于 Windows 上的 RegMon 或 Filemon,但适用于 Java JVM。谢谢:)
最佳答案
实际上,采取堆转储"is"一种智能方式,因为人们必须明白(尤其是在 GUI 框架中)单击将改变的不仅仅是按钮参数。
这里面涉及到很多东西。 您可能想要使用内置的 Eclipse 调试器,它允许您跟踪特定变量以及整个对象的更改。
如果您对内部结构更感兴趣,我可以推荐 jvisualvm,它默认捆绑在 jdk 中。它将附加到热点 JVM 实例以监视其内部。
或者:
- http://visualvm.java.net/ - 用于一般 JVM 跟踪的多功能工具。
- https://eclipse.org/mat/ - 出色的内存分析器,例如可以进行两次两次堆转储,并清楚地向您显示发生了什么变化<<--- 可能是您正在寻找的内容
关于java - 有没有一个软件可以实时查看JVM堆内存中对象的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28583535/