我的多线程Java程序崩溃,因为它耗尽了堆空间而我认为不应该。假设罪魁祸首是无意识的对象保留,那么什么是一个很好的免费工具来调查哪些对象被无意保留?
我的IDE是Eclipse。
答案 0 :(得分:4)
像Eclipse MAT这样的工具将有助于找到贪吃的记忆猪,甚至还有一个内存泄漏探测器。
Visual VM的内存分析器如果需要更低级别,也可能会有所帮助。
答案 1 :(得分:4)
以下是您可以查看的开源工具列表:http://java-source.net/open-source/profilers。当然,JMap和JConsole也是可能的解决方案。
答案 2 :(得分:3)
我最后一次浏览免费的个人资料时,它们并不像现有的商业资讯一样好。
我建议进行评估
并投入资金购买您最喜欢的工具许可证。
一个好的分析器,与一个坏的分析器相比,可以很容易地为您节省一天的调试工作,并且可以支付许可证(以及为开发这些漂亮工具的人做得很好)。
这三个插件都插入到Eclipse中,允许您从当前项目直接从Eclipse开始分析,因此设置CLASSPATH没有繁琐的工作。
答案 3 :(得分:1)
Sun's VisualVM是免费的,但我是JProfiler的粉丝,这是一个商业应用,虽然你可以获得30天的试用。
答案 4 :(得分:0)
我将从JDK,jconsole和jmap附带的工具开始。 java.sun.com上有good article about JVM monitoring。