繁体   English   中英

我如何找到导致内存泄漏的应用程序

[英]how can i find which application is causing memory leaks

我在具有JDK-1.6.0_23版本的RHEL 5.4上运行Tomcat-6.0.32。 我正在运行超过15个应用程序。 应用程序仅是小型应用程序。 我的RAM是8GB,交换空间是12GB。 我将堆大小从512Mb设置为4GB。

问题是运行数小时或数天后,tomcat尽管已启动并正在运行,但它不提供服务。 虽然我可以看到catalina.out日志文件,但它显示了内存泄漏问题。

现在,我担心的是我需要显示该问题的解决方案,或者至少我需要突出显示导致内存泄漏的应用程序。

谁能解释我如何发现导致内存泄漏问题的应用程序?

一种选择是使用堆转储(请参阅如何在未在控制台中运行的Windows上获取Java进程的线程和堆转储 )并以后分析堆转储。

另一个选择是使用jmap,VisualVM和类似工具直接分析过程。

您可以结合使用jmap / jhat工具(在Java 8中不支持这两种工具)来收集堆转储(使用mmap)并标识堆中的顶部对象(使用jhat)。 尝试将这些对象与应用程序相关联,并识别恶意对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM