是否有用于实时查看JVM堆内存中对象更改的软件?

时间:2015-02-18 12:18:48

标签: java jvm heap tracing

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

2 个答案:

答案 0 :(得分:3)

实际上进行堆转储''智能方式,因为必须明白(特别是在GUI框架中)点击将比按钮参数更改更多。

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

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

或者:

  • http://visualvm.java.net/ - 用于一般JVM跟踪的多工具。
  • https://eclipse.org/mat/ - 精彩的内存分析器,例如可以进行两次两次堆转储,并清楚地显示已更改的内容&lt;&lt; --- 可能是您正在寻找的内容< / strong>

答案 1 :(得分:0)

您可以使用堆转储并尝试学习这些堆转储,如Jitsu所建议。

其他方式是:

Eclipse Memory Analyzer: Java堆分析器,可帮助您查找内存泄漏并减少内存消耗

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

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

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

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

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