我正在尝试找出我的Java应用程序中的内存泄漏和性能问题。是否有一个程序可以帮助我调试我的应用程序并显示性能结果?
谢谢。
我正在尝试找出我的Java应用程序中的内存泄漏和性能问题。是否有一个程序可以帮助我调试我的应用程序并显示性能结果?
谢谢。
我使用了很多工具来找出为什么我的程序会占用100多MB的内存,优化了代码以消除任何可能的内存泄漏。后来我发现,一旦jvm从操作系统中获取了一些内存,即使该内存没有被使用,它也不总是返回,这经常看起来像内存泄漏。这取决于-Xmx和-XX:MaxHeapFreeRatio。我将Xmx设置为40,大约是我的应用程序应该使用的内存量,内存使用量保持在10-15 MB的范围内,而不是无法控制地增加。
此外,jconsole是一个很棒的工具。它随着jdk一起提供。
Eclipse拥有很好的内存转储分析器; 但是找出内存泄漏可能非常具有挑战性,需要你深入了解应用程序分配对象的方式。
我花了整整两天才发现,我的一个自定义JTable单元格编辑器类在实例化时分配了一个JDialog,但实际上没有打开它,而对话框的本地部分保持了单元格编辑器实例锁定,从而导致表格、屏幕以及与其相关联的所有实体对象都被锁定。