【发布时间】:2009-11-09 18:26:47
【问题描述】:
我有一个内存不足的 java 应用程序,但我不知道是哪个代码分配了内存。有没有我可以检查的应用程序?我使用 Eclipse。
【问题讨论】:
标签: java eclipse memory profiling
我有一个内存不足的 java 应用程序,但我不知道是哪个代码分配了内存。有没有我可以检查的应用程序?我使用 Eclipse。
【问题讨论】:
标签: java eclipse memory profiling
由于您使用 eclipse,我建议您使用 Eclipse Memory Analyzer 插件。这个工具效果很好,甚至会提供一些可能的泄漏嫌疑人的报告。我已经查看了超过 1G 的堆转储,没有任何问题。我只是使用 JDK 附带的 jconsole 来获取转储。
这里还有一个很棒的blog,由该工具的一位作者撰写。
这也是免费的。
【讨论】:
VisualVM 是一个可视化工具,集成了多个命令行 JDK 工具和轻量级分析功能。它专为生产和开发时间使用而设计,进一步增强了 Java SE 平台的监控和性能分析能力。
它包含在JDK中。
【讨论】:
我在 JProfiler 上取得了巨大的成功
http://www.ej-technologies.com/products/jprofiler/overview.html
【讨论】:
你想要一个 Profiler。
【讨论】:
您需要使用内存分析器。您可以使用 Sun 的 JVM Tool Interface 或第三方分析器,如 JProfiler。 Eclipse 也有分析工具,称为Test & Performance Tools Platform (TPTP)。
【讨论】:
我相信每个人都有自己喜欢的,但我推荐Netbeans。
【讨论】:
Yourkit 是一个很棒的工具,我曾多次使用它来查找和记录性能问题。带有 TPTP 框架的 Eclipse 也可用于执行此操作。它也适用于远程应用程序服务器(您需要启用分析代理并在 JVM 中打开远程调试),但它允许您对几乎任何 J2EE 环境运行分析。
【讨论】:
对于快速分析或者如果您不使用 Eclipse 或较旧版本的 jvm,hprof 是一个不错的选择。 (我只是将其添加为参考。)。
【讨论】:
前几天我必须找到导致 2.6G 堆转储的内存泄漏源。 Jhat 需要令人难以置信的 20G 堆大小才能在不崩溃的情况下通过它。 Eclipse 内存分析器在 10G 以下完成。也就是说,我发现这两个工具都很有用,但我会首先推荐内存分析器,以便更有效地使用内存并更易于使用。
我对所使用的内存量感到非常惊讶,但我可以向你保证,如果我使用的内存少,我会遇到 OutOfMemory 错误。
【讨论】:
我使用HP Diagnostics Profiler 免费评估(5 个线程无限制)发现了内存泄漏。它允许以直观、简单的方式跟踪内存分配并进行堆分析。
【讨论】: