ero*_*ppa 6 java memory memory-leaks memory-management
我有一个独立的程序,我在本地运行,它是一个24/7运行的服务器类型程序.最近我发现它有内存泄漏,现在我们唯一的解决方案是每4小时重启一次.找到内存泄漏的最佳方法是什么?我们应该使用哪种工具和方法?
Tho*_*sen 12
如果您使用Sun的Java并且至少使用Java 6更新10(即最新的),那么请尝试在运行程序的同一台机器上运行JDK中的jvisualvm,并附加到它并启用分析.
这很可能是最简单的入门方式.
当涉及到狩猎内存问题时,我使用SAP Memory Analyzer Eclipse Memory Analyzer(MAT),一个堆转储分析工具.
Memory Analyzer提供了一个通用工具包来分析Java堆转储.除了堆散步和保留大小的快速计算之外,Eclipse工具还报告泄漏嫌疑人和内存消耗反模式.主要应用领域是Out of Memory Errors和高内存消耗.
该项目由SAP发起,后来一直是开源的,现在称为Eclipse Memory Analyzer.查看" 入门"页面,特别是" 查找内存泄漏"部分(我在下面粘贴它,因为我修复了一些链接):
首先运行泄漏报告以自动检查内存泄漏.
此博客详细介绍了如何查找泄漏工作台窗口.
Memory Analyzer在SAP成长.当时,Krum在博客上发表了关于使用SAP Memory Analyzer查找内存泄漏的文章.内容仍然相关!
对于堆转储分析(和内存泄漏),这可能是您可以获得的最佳工具(甚至是金钱).
PS:我不适合SAP/IBM/Eclipse,我只是一个非常开心的MAT用户,有积极的反馈.