什么是用于调查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监视的好文章 。