想象一下,您有一个正在运行的Java应用程序,并且您想要检查按钮单击更改的对象属性以及JVM堆内存中的位置。在一个小程序中,您可以逐步调试单击,但如果它是一个非常大的程序,这可能会花费很多时间。那么有一个JVM监视器可以在这样的事件之后记录并显示堆中的更改。我知道我可以在事件之前和之后进行堆转储,然后比较,但我问是否有更聪明的方法。类似于RegMon或Filemon for Windows但适用于Java JVM。谢谢:))
答案 0 :(得分:3)
实际上进行堆转储''智能方式,因为必须明白(特别是在GUI框架中)点击将比按钮参数更改更多。
这涉及到很多东西。 您可能希望使用内置的Eclipse调试器,它允许您跟踪特定变量以及整个对象的更改。
如果您对内部构件更感兴趣,我可以推荐jvisualvm,它默认捆绑在jdk中。它将附加到热点JVM实例以监视其内部。
或者:
答案 1 :(得分:0)
您可以使用堆转储并尝试学习这些堆转储,如Jitsu所建议。
其他方式是:
Eclipse Memory Analyzer: Java堆分析器,可帮助您查找内存泄漏并减少内存消耗
VisualVM& JConsole:它提供了很好的UI来分析你的jvm内存
JStat:这是一个java虚拟机统计和监控工具
Netbeans Profiler:与Netbeans一起提供,可让您对应用程序进行概要分析
JProfiler:这是一个付费工具,可以让您更深入地了解Java应用程序分析以分析内存。
FusionReactor:另一种付费工具,可以提供对在生产环境中运行的Java应用程序的实时洞察,以分析代码,内存和线程。