什么是用于调查Java中无意识的对象保留的好的免费工具?

我的multithreadingJava程序崩溃,因为它耗尽了堆空间,我认为不应该。 假设罪魁祸首是无意识的对象保留,那么什么是一个很好的免费工具来调查哪些对象被无意中保留了?

我的IDE是Eclipse。

以下是您可以查看的开源工具列表: http : //java-source.net/open-source/profilers 。 当然,JMap和JConsole也是可能的解决方案。

像Eclipse MAT这样的工具将有助于找到贪吃的记忆猪,甚至还有一个内存泄漏检测器。

如果您需要更低级别, Visual VM的内存分析器也可能会有所帮助。

我最后一次调查自由分析器时,它们并不像现有的商业分析师那么好。

我建议评估

  • JProfiler的
  • YourKit
  • JProbe的

并投入资金获得您最喜欢的工具许可证。

一个好的分析器,与一个坏的分析器相比,可以很容易地为您节省一天的调试工作,并且可以为许可证付出代价(以及为开发这些漂亮工具的人做得很好)。

这三个插件都插入到Eclipse中,允许您从当前项目直接从Eclipse开始分析,因此设置CLASSPATH没有繁琐的工作。

Sun的VisualVM是免费的,但我是JProfiler的忠实粉丝,它是一个商业应用程序,虽然你可以获得30天的试用期。

我将从JDK,jconsole和jmap附带的工具开始。 在java.sun.com上有关于JVM监视的好文章 。