一个好的Java调试器是什么?

5

我正在尝试找出我的Java应用程序中的内存泄漏和性能问题。是否有一个程序可以帮助我调试我的应用程序并显示性能结果?

谢谢。


4
你目前正在使用什么东西不符合你的需求? - Paul Sasik
Eclipse。我正在尝试使用一个内存插件,但是我就是无法让它工作起来。所以我正在寻找一个更专业的应用程序,而不仅仅是一个简单的插件。 - Kyle
1
你可能想把标题改成“什么是好的Java分析器?”因为传统的调试器通常更适合诊断控制流和逻辑错误,而分析器更适合诊断内存泄漏和性能问题。 - Daniel Pryden
4个回答

5

是的。JVisualVM是在Java中可视化和调试内存泄漏方面绝对最好的工具。 - Daniel Pryden
不一定,但作为JDK的一部分,它是一个很好的起点。 - Thorbjørn Ravn Andersen
@Kyle,欢迎。JDK中有更多有用的工具,但它们比visualvm更低级别。 - Thorbjørn Ravn Andersen

1

我使用了很多工具来找出为什么我的程序会占用100多MB的内存,优化了代码以消除任何可能的内存泄漏。后来我发现,一旦jvm从操作系统中获取了一些内存,即使该内存没有被使用,它也不总是返回,这经常看起来像内存泄漏。这取决于-Xmx和-XX:MaxHeapFreeRatio。我将Xmx设置为40,大约是我的应用程序应该使用的内存量,内存使用量保持在10-15 MB的范围内,而不是无法控制地增加。

此外,jconsole是一个很棒的工具。它随着jdk一起提供。


0

Eclipse拥有很好的内存转储分析器; 但是找出内存泄漏可能非常具有挑战性,需要你深入了解应用程序分配对象的方式。

我花了整整两天才发现,我的一个自定义JTable单元格编辑器类在实例化时分配了一个JDialog,但实际上没有打开它,而对话框的本地部分保持了单元格编辑器实例锁定,从而导致表格、屏幕以及与其相关联的所有实体对象都被锁定。


0
您可以尝试使用性能检测工具。以下是该工具的URL链接。

http://perfinsp.sourceforge.net/

Java应用程序的性能与JVM运行应用程序的方式成正比。这个工具提供了有关JVM的非常好的分析信息, 但它不是一个图形化工具,您需要查看生成的文本文件。但是这只需要一次努力,您就可以方便地使用此工具。我在处理性能相关问题时多次使用它,它对我很有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接