0

我正在使用的旧 Java 应用程序遇到内存不足异常,是否有任何工具可以帮助我找出应用程序的哪一部分导致内存不足异常?

大多数工具似乎都是为基于 Web 的 Java 应用程序构建的。

我的应用程序不是基于 Web 的应用程序,因此无法创建 WAR 文件和 EAR 文件,然后在它们上运行用于内存泄漏的工具。

有人知道此类应用程序的工具吗?

4

4 回答 4

3

JDK 中包含的一些基本工具:

  • jps -l :获取 Java 进程的 PID。然后,
  • jmap -histo:live :按类获取数量和内存使用情况,这样您就可以发现哪个更可能导致您的内存泄漏

您还可以使用嵌入在 JVM 中的分析器 HPROF。非常易于使用,无需更改代码,只需几个命令行选项。请参阅使用说明文档。您可以“手动”阅读 hprof 的日志或使用诸如 HPJmeter(不是 Apache JMeter)之类的工具来绘制漂亮的图表等。任何商业分析器也可以处理 HPROF 的输出。

于 2013-03-20T10:28:35.333 回答
1

如果可以修改 JVM 启动参数,让它在 OutOfMemory 上转储一个堆文件,并使用 Eclipse 的内存分析工具对其进行分析。HotSpot JVM 的参数是-XX:-HeapDumpOnOutOfMemoryError. 要指定此文件的位置,请使用-XX:HeapDumpPath=<path_to_save>.

于 2013-03-19T23:29:13.643 回答
0

您可以尝试的另一种工具是Plumbr。它旨在发现任何基于 Java 的应用程序中的内存泄漏。

于 2013-03-20T10:21:33.960 回答
-1

yourkit是最好的!试试看!甚至还提供了简单的教程。但是您必须购买该工具

于 2013-03-20T10:24:31.287 回答