我正在尝试使用我的java应用程序查找内存泄漏和性能问题。是否有一个程序可以帮助我调试我的应用程序并显示性能结果?
感谢。
答案 0 :(得分:4)
查看JDK中的jvisualvm - Netbeans探查器的一个子集 - 它可以附加到正在运行的Java 6进程,并允许您对其进行概要分析并进行内存分析。
答案 1 :(得分:1)
我使用了很多工具来查找为什么我的程序吃了100多Mb的ram,抛光代码以消除任何可能的内存泄漏。后来我发现,一旦jvm从操作系统中获取了一些内存,我并不总是返回它,即使没有使用该内存,这通常看起来像是内存泄漏。这取决于-Xmx和-XX:MaxHeapFreeRatio。我将Xmx设置为40,这大约是我的应用程序应该使用多少内存,并且内存使用率保持在此范围的10-15 Mb之内,而不是无法控制地增加。
此外,jconsole是一个很棒的工具。它带有jdk。
答案 2 :(得分:0)
Eclipse有一个很好的内存转储分析器;但是发现内存泄漏可能非常具有挑战性,需要您深入了解应用程序分配对象的方式。
我花了整整2天才发现我的一个自定义JTable单元格编辑器类在实例化时分配了一个JDialog,而没有实际打开它,并且对话框的原生部分保持单元格编辑器实例被锁定,因此表格,因此屏幕以及与之相关的所有实体对象。
答案 3 :(得分:0)
您可以尝试使用性能检查工具。以下是URL。
http://perfinsp.sourceforge.net/
Java应用程序性能与JVM运行应用程序的方式成正比。这个工具提供了很好的关于JVM的分析信息。但它不是一个图形工具,你需要通过生成的文本文件。但它的一次性努力,你可以使用这个工具。我用了很多时间来解决与性能相关的问题,这对我帮助很大。