hprof 不大 泄露_HPROF –内存泄漏分析教程

hprof 不大 泄露

本文将为您提供有关如何通过生成和分析Sun HotSpot JVM HPROF堆转储文件来分析JVM内存泄漏问题的教程。

一个现实的案例研究将用于此目的:Weblogic 9.2内存泄漏影响Weblogic Admin服务器。

环境规格

  • Java EE服务器:Oracle Weblogic Server 9.2 MP1
  • 中间件操作系统:Solaris 10
  • Java虚拟机:Sun HotSpot 1.5.0_22
  • 平台类型:中间层

监控和故障排除工具

  • Quest Foglight(JVM和垃圾收集监视)
  • jmap(hprof /堆转储生成工具)
  • 通过IBM支持助手进行的Memory Analyzer 1.1(hprof堆转储分析)
  • 平台类型:中间层

步骤#1 – WLS 9.2管理服务器JVM监视和泄漏确认

Quest Foglight Java EE监视工具对于从Weblogic Admin服务器识别Java堆泄漏非常有用。 如下所示,Java Heap内存随着时间的推移而增长。

如果您没有为Weblogic环境使用任何监视工具,那么我建议您至少启用HotSpot VM的verbose:gc。 请访问有关此主题的Java 7 verbose:gc教程 ,以获取更多详细说明。

步骤#2 –从泄漏的JVM生成堆转储

发现JVM内存泄漏后,目标是使用Sun JDK jmap实用程序生成堆转储文件(二进制格式)。

**请注意,生成jmap堆转储将导致您的JVM无法响应,因此运行jmap实用程序之前 ,请确保没有更多的流量发送到受影响的/泄漏的JVM **

<JDK HOME>/bin/jmap -heap:format=b <Java VM PID>

此命令将生成泄漏的JVM的堆转储二进制文件(heap.bin)。 文件的大小和生成过程所花费的时间将取决于您的JVM大小和计算机规格/速度。

对于我们的案例研究,在大约1小时的时间里生成了约2 GB的二进制堆转储文件。

由于OutOfMemoryError并在JVM启动参数中添加-XX:+ HeapDumpOnOutOfMemoryError,也会自动生成Sun HotSpot 1.5 / 1.6 / 1.7堆转储文件。

步骤#3 –在Memory Analyzer工具中加载堆转储文件

现在是时候在Memory Analyzer工具中加载堆转储文件了。 加载过程将需要几分钟,具体取决于堆转储的大小和计算机的速度。

步骤#4 –分析您的堆转储

内存分析器为您提供许多功能,包括“泄漏可疑”报告。 对于此案例研究,以Java堆直方图为起点来分析泄漏的对象和源。

对于我们的案例研究,发现java.lang.String和char []数据是泄漏的对象。 现在的问题是泄漏的根源是什么,例如那些泄漏对象的引用。 只需右键单击泄漏的对象,然后选择>>列出对象>带有传入引用的引用

如您所见,发现javax.management.ObjectName对象是泄漏的String&char []数据的源。 Weblogic Admin服务器正在通过MBeans / JMX通信并从其受管服务器中提取统计信息,该MBeans / JMX为任何MBean对象类型创建javax.management.ObjectName。 现在的问题是,为什么Weblogic 9.2无法正确发布此类对象……

根本原因:Weblogic javax.management.ObjectName泄漏!

在我们进行堆转储分析之后,对Weblogic的已知问题进行了回顾,确实揭示了以下Weblogic 9.2错误:

  • Weblogic错误ID:CR327368
  • 说明:管理服务器上的javax.management.ObjectName对象的内存泄漏,用于在管理服务器上引起OutOfMemory错误。
  • 受影响的Weblogic版本:WLS 9.2
  • 固定在:WLS 10 MP1

http://download.oracle.com/docs/cd/E11035_01/wls100/issues/known_resolved.html
考虑到我们的堆转储分析,WLS版本和此已知问题描述的完美匹配,这一发现是非常确定的。

结论

我希望本教程和案例研究一起帮助您了解如何使用jmap和Memory Analyzer工具查明Java Heap泄漏的来源。

请不要犹豫,发表任何评论或问题。

我还提供了免费的Java EE咨询,因此请给我发送电子邮件 ,并向我提供您的堆转储文件的下载链接,以便我可以为您进行分析并在此Blog上创建一篇文章来描述您的问题,根本原因和解决方案。

参考: HPROF –来自我们的JCG合作伙伴 Pierre-Hugues Charbonneau的内存泄漏分析教程 ,位于Java EE支持模式和Java教程博客中。


翻译自: https://www.javacodegeeks.com/2012/04/hprof-memory-leak-analysis-tutorial.html

hprof 不大 泄露

Mac hprof 内存分析工具是一种用于分析 Java 应用程序内存使用情况的工具。它通过捕获 Java 虚拟机的堆转储文件(hprof 文件)来提供详细的分析报告和图形化界面,帮助开发人员识别和解决内存泄漏、内存溢出等内存相关问题。 使用 Mac hprof 内存分析工具,我们可以查看应用程序中每个对象的实际大小、引用关系和分配情况。通过分析对象的存活关系,我们可以定位内存泄漏的源头,找到不再使用的对象、未经妥善释放的资源等问题。 除了基本的内存信息分析,Mac hprof 内存分析工具还提供了一些有用的功能。比如,它可以生成堆转储文件的统计数据和图表,帮助开发人员更直观地了解内存使用情况。此外,它还支持生成内存泄漏报告,指导开发人员采取相应的措施修复问题。 在使用 Mac hprof 内存分析工具时,我们需要首先在 Java 虚拟机启动时启用堆转储功能,生成 hprof 文件。然后,我们可以使用 Mac hprof 工具来加载和分析这个转储文件。该工具提供了一个用户友好的界面,显示了应用程序的内存使用情况和相关统计信息。 总而言之,Mac hprof 内存分析工具是一个有用的工具,可帮助开发人员诊断和解决Java应用程序的内存相关问题。通过分析堆转储文件,我们可以深入了解内存使用情况,发现内存泄漏和资源浪费等问题,并采取相应的措施来优化应用程序的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值