如何查看Java堆中的内容?

我设法在正在开发的Java应用程序中获得内存“泄漏”。运行我的JUnit测试套件时,我会随机退出内存异常(java.lang.OutOfMemoryError)。

我可以使用哪些工具来检查我的Java应用程序的堆,以查看所有堆中正在使用的工具,以便可以确定哪些保留了对应该能够进行垃圾收集的对象的引用。

回答:

VisualVM包含在Java的最新版本中。您可以使用它来创建堆转储,并查看其中的对象。

另外,您还可以使用jmap(在jdk / bin目录中)创建一个heapdump命令:

jmap -dump:format=b,file=heap.bin <pid>

您甚至可以使用它来快速获取所有对象的直方图

jmap -histo <pid>

我可以推荐使用Eclipse Memory

Analyzer(http://eclipse.org/mat)对堆转储进行高级分析。它使您可以精确地找出为什么某个对象或一组对象仍然存在。这是一个博客条目,向您显示Memory

Analyzer可以做什么:http :

//dev.eclipse.org/blogs/memoryanalyzer/2008/05/27/automated-heap-dump-

analysis-finding-memory-leaks-with-one-

点击/

以上是 如何查看Java堆中的内容? 的全部内容, 来源链接: utcz.com/qa/397675.html

回到顶部