大型网站集群怎么做,学做ps的网站,网站开发代码h5,做网站公司没签合同本文将为您提供有关如何通过生成和分析Sun HotSpot JVM HPROF堆转储文件来分析JVM内存泄漏问题的教程。 一个现实的案例研究将用于此目的#xff1a;Weblogic 9.2内存泄漏影响Weblogic Admin服务器。 环境规格 Java EE服务器#xff1a;Oracle Weblogic Server 9.2 MP1 中… 本文将为您提供有关如何通过生成和分析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 FoglightJVM和垃圾收集监视 jmaphprof /堆转储生成工具 通过IBM支持助手进行的Memory Analyzer 1.1hprof堆转储分析 平台类型中间层 步骤1 – WLS 9.2管理服务器JVM监视和泄漏确认 Quest Foglight Java EE监视工具对于从Weblogic Admin服务器识别Java堆泄漏非常有用。 如下所示Java Heap内存随着时间的推移而增长。 如果您没有为Weblogic环境使用任何监视工具那么我建议您至少启用HotSpot VM的verbosegc。 请访问有关此主题的Java 7 verbosegc教程 以获取更多详细说明。 步骤2 –从泄漏的JVM生成堆转储 发现JVM内存泄漏后目标是使用Sun JDK jmap实用程序生成堆转储文件二进制格式。 **请注意生成jmap堆转储将导致您的JVM无法响应因此请确保在运行jmap实用程序之前 没有更多的流量发送到受影响的/泄漏的JVM ** JDK HOME/bin/jmap -heap:formatb 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对象是泄漏的Stringchar []数据的源。 Weblogic Admin服务器正在通过MBeans / JMX通信并从其受管服务器中提取统计信息该MBeans / JMX为任何MBean对象类型创建javax.management.ObjectName。 现在的问题是为什么Weblogic 9.2无法正确发布此类对象…… 根本原因Weblogic javax.management.ObjectName泄漏 在我们进行堆转储分析之后对Weblogic的已知问题进行了回顾但确实发现了以下Weblogic 9.2错误 Weblogic错误IDCR327368 说明管理服务器上的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