`
bqw_5189
  • 浏览: 32360 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

[转]Sun JDK自带JVM内存使用分析工具HProf

阅读更多
Sun JDK自带JVM内存使用分析工具HProf       使用Sun JDK自带JVM内存使用分析工具HProf可以分析JVM堆栈,从而找到占用内存较大的对象。这对应经常出现内存泄漏(OOM)的JAVA系统进行调优很有帮助。


HProf使用方法

·         在WeblogicServer启动脚本中增加-Xrunhprof:heap=sites,重新启动WeblogicServer。

·         使用kill -3 <pid> 或退出WeblogicServer均会生成java.hprof.txt文件,直接打开此文件便可分析JVM的具体运行情况。


从java.hprof.txt记录的JVM堆栈结果中可以发现JVM占用内存较大的对象:

          percent         live       alloc'ed stack class

rank   self accum    bytes objs   bytes objs trace name

    1 4.57% 4.57% 2289696 47702 8392224 174838 4251 [C

    2 3.99% 8.57% 2000016    1 2000016    1 12308 [C

    3 3.65% 12.22% 1827552 9622 1852672 10082 43265 [C

    4 2.58% 14.80% 1293912 53913 3929424 163726 4258 java.lang.String

    5 2.05% 16.85% 1028664 7585 3207272 24923 4252 [C

    6 2.03% 18.88% 1015816 159 1015816 159 18694 [B

    7 1.88% 20.77%   942080 230 2740224 669 20416 [B

    8 1.61% 22.37%   805752 2142 2150856 4635 45318 [B

    9 1.60% 23.98%   802880 772 802880 772 24710 weblogic.servlet.utils.URLMatchMap$URLMatchNode

   10 1.60% 25.57%   799400 19985 2781400 69535 45073 cnc.util.Field

   11 1.36% 26.93%   679360 3805 679360 3805   494 [B

   12 1.35% 28.28%   674856 28119 5181240 215885 2985 java.util.HashMap$Entry

……

……

   96 0.19% 63.73%    94776 3112   94776 3112 9146 [C

   97 0.19% 63.92%    93456 3894 123936 5164 23631 java.lang.String

   98 0.19% 64.10%    93224 3884 123968 5165 23644 java.lang.String

   99 0.19% 64.29%    93192 3883 123936 5164 23636 java.lang.String

100 0.18% 64.47%    89528 238 240264 520 33227 [B

101 0.17% 64.64%    86448 1901 103472 2255 18715 java.lang.Object

102 0.17% 64.81%    85464 676   85768 695 18715 [S

103 0.17% 64.98%    85184 1331   85184 1331 28266 weblogic.ejb20.internal.MethodDescriptor

104 0.17% 65.15%    84224 752   84224 752 24148 weblogic.servlet.internal.dd.ServletDescriptor

105 0.17% 65.32%    84136 528 50471136 348769    63 [C

106 0.16% 65.48%    79968 1428 388976 6946 5503 java.lang.reflect.Method

107 0.15% 65.63%    77520 1615   77520 1615 27967 weblogic.ejb20.deployer.mbimpl.MethodInfoImpl

108 0.15% 65.79%    77056 4816 469808 29363 20250 java.lang.Object

109 0.15% 65.94%    76960   74   76960   74 23695 [B

110 0.15% 66.09%    76104 3171 215040 8960 45071 cnc.util.FyCol

111 0.15% 66.24%    74688 3112   74688 3112 9152 java.util.Hashtable$Entry

112 0.15% 66.39%    74688 3112   74688 3112 9147 java.lang.String

113 0.15% 66.54%    74280   61 794328 788 45313 [C

114 0.14% 66.68%    72480 1510 436032 9084 45353 [C

115 0.14% 66.82%    70720   68   70720   68 25869 [B

116 0.14% 66.97%    70720   68   70720   68 27448 [B

117 0.14% 67.11%    70272 1279 142672 2439 5503 [C

118 0.14% 67.24%    69256   86   69256   86 6584 [S

119 0.13% 67.38%    67056   66   67056   66 28882 java.lang.Object

120 0.13% 67.51%    66176 752   66176 752 24170 weblogic.servlet.internal.dd.UIDescriptor

121 0.13% 67.64%    65688 715   65688 715 25389 [C

122 0.13% 67.77%    65600    4 885600   54 23939 [C

123 0.13% 67.90%    65600    4 623200   38 40639 [C

124 0.13% 68.03%    65576 367   65576 367 51686 [C

125 0.13% 68.17%    65568    2   65568    2 30610 java.util.HashMap$Entry

126 0.13% 68.30%    65568    2 130816   16 43271 java.util.HashMap$Entry

127 0.13% 68.43%    65552    1   65552    1 16617 [B

128 0.13% 68.56%    64600 1615   64600 1615 27969 java.util.HashMap

129 0.13% 68.68%    63888 2662   64032 2668 16951 java.util.HashMap$Entry

130 0.13% 68.81%    63888 2662   64032 2668 16997 java.util.HashMap$Entry

131 0.13% 68.94%    63888 2662   64032 2668 16996 weblogic.rmi.internal.ClientMethodDescriptor

132 0.13% 69.07%    63888 2662   99120 4130 16949 java.lang.String

133 0.13% 69.19%    63888 2662   64032 2668 16976 java.lang.String

134 0.13% 69.32%    63232 152   63232 152 9655 weblogic.utils.collections.ConcurrentHashMap$Entry

135 0.13% 69.45%    63232 152   63232 152 9704 weblogic.utils.collections.ConcurrentHashMap$Entry

136 0.12% 69.57%    62168 3885   82632 5164 23628 [B

137 0.12% 69.69%    61680 406   66904 468     1 [C

138 0.12% 69.82%    61504    4 246016   16 47372 [B

139 0.12% 69.94%    61144   36 91019160 23904    92 [B

140 0.12% 70.06%    61040 763   61040 763 24194 weblogic.servlet.internal.dd.ServletMappingDescriptor

141 0.12% 70.18%    60400 1510 363360 9084 45338 java.util.Hashtable

142 0.12% 70.30%    59544 827   59544 827 24746 weblogic.servlet.internal.ServletRuntimeMBeanImpl

143 0.12% 70.42%    59248 1058 484984 8664 33236 oracle.jdbc.ttc7.TTCItem

144 0.12% 70.53%    58152 232 187176 764   748 [C

145 0.12% 70.65%    57888 2412 161904 6746 16621 java.lang.String

146 0.11% 70.77%    57400 1435   57400 1435 16855 java.util.HashMap

……

……





根据以上的结果,在java.hprof.txt中定位到导致分配大内存的操作如下:

TRACE 63:

       java.lang.StringBuffer.expandCapacity(StringBuffer.java:202)

       java.lang.StringBuffer.append(StringBuffer.java:401)

       java.util.zip.ZipFile.getEntry(ZipFile.java:148)

       java.util.jar.JarFile.getEntry(JarFile.java:198)

TRACE 92:

       java.util.zip.InflaterInputStream.<init>(InflaterInputStream.java:71)

       java.util.zip.ZipFile$1.<init>(ZipFile.java:240)

       java.util.zip.ZipFile.getInputStream(ZipFile.java:212)

       java.util.zip.ZipFile.getInputStream(ZipFile.java:183)

再进一步分析则需要应用开发人员对应用代码做相应的分析定位。


注意:使用HProf非常消耗资源,切记不要在生产系统使用。

http://wakemorpheus.blog.163.com/blog/static/126219534200991221030581/

分享到:
评论

相关推荐

    javahprof文件分析工具1.0安装英文版

    java hprof(文件类型分析器)是一款功能强大的java问题解析软件。可以帮助大家在编辑过程种遇到问题的话就马上解决哦。有兴趣的话赶紧下载!...HPROF是JDK自带的分析工具,虽然只有基本功能,但是同样能提供程序的

    Sun JVM原理与内存管理

    Sun JDK 1.6 的垃圾收集器(GC)是其内存管理的关键组成部分,它负责自动地回收不再使用的对象所占用的内存。本文将详细介绍Sun JDK 1.6 GC的工作原理、内存管理机制以及调优技巧。 #### 二、为什么学习GC? - **...

    ha456.jar(IBMHeapAnalyzer)JVM内存分析工具

    【ha456.jar(IBMHeapAnalyzer)JVM内存分析工具】是一款由IBM开发的专业工具,主要用于诊断Java虚拟机(JVM)的内存问题。它能够解析和分析JVM生成的内存转储文件(通常称为heap dump或hprof文件),帮助开发者识别...

    JDK自带VM分析工具

    ### JDK 自带 VM 分析工具详解 在 Java 开发领域,深入理解并有效利用 Java 开发工具包(JDK)自带的各种虚拟机(VM)分析工具对于提高应用程序性能至关重要。本文将详细介绍 JDK 自带的几个核心 VM 分析工具:jps...

    jvm内存分析-jdk17-memoryAnalyer

    在"jvm内存分析-jdk17-memoryAnalyzer"这个主题中,我们将深入探讨JVM内存结构,特别是针对Java 17版本的内存配置和分析工具Memory Analyzer (MAT)。 JVM内存主要分为以下几个区域: 1. **堆内存**:这是Java程序...

    JVM 排查工具 mat JDK 11

    为了解决这类问题,开发者需要借助专门的工具进行排查和分析,Eclipse Memory Analyzer Tool(MAT)就是这样一个强大的JVM内存分析工具。本文将深入探讨MAT在JDK 11环境中的使用方法以及如何利用它来解决OOME问题。 ...

    Sun_JDK_1.6内存管理--实现篇-毕玄

    标题与描述中的关键词“Sun_JDK_1.6内存管理--实现篇”指向了Java虚拟机(JVM)中Sun JDK 1.6版本的内存管理机制及其具体实现细节。在这一部分,我们将会深入探讨Sun JDK 1.6如何处理内存分配、垃圾收集以及其他优化...

    Sun JDK 1.6内存管理--调优篇

    6. 监控和诊断:使用JVisualVM、jconsole等工具监控JVM内存状态,通过-XX:+PrintGC、-XX:+PrintGCDetails等参数输出GC日志,分析GC行为。 通过深入理解Sun JDK 1.6的内存管理机制和调优策略,开发者可以有效地提高...

    jdk8 jvm 参数图(随手参考好资料)

    常用jvm参数都在这张图中,参考起来方便,是国外大神整理的

    jdk 内存设置jdk内存设置

    jdk 内存设置 jdk 内存设置是 Java 开发中非常重要的一部分。它直接影响着 Java 应用程序的性能和稳定性。...合理的 jdk 内存设置可以提高 Java 应用程序的性能和稳定性,提高开发者的开发效率和用户的使用体验。

    JVM内存日志

    - **Eclipse Memory Analyzer (MAT)**:强大的内存分析工具,可以解析`dump.txt`文件,提供详细的内存泄漏分析报告。 - **VisualVM**:JDK自带的多用途JVM监控工具,也可以分析内存dump文件。 5. 优化策略: - ...

    JVM内存空间分配笔记

    JVM(Java虚拟机)内存模型主要由以下几个部分组成:程序计数器、Java虚拟机栈、本地方法栈、Java堆以及方法区(在JDK 8之后称为元空间)。下面将对这几个部分进行详细介绍。 #### 二、程序计数器 程序计数器是一...

    jdk,jvm源码

    JDK(Java Development Kit)包含了开发和运行Java程序所需的所有工具,包括JVM。当我们谈论"jdk,jvm源码"时,我们主要关注的是JVM的内部工作机制以及如何通过源码来理解这个过程。 JVM的运行机制主要包括以下几个...

    jvm内存监控及调优方法

    jvm内存监控及调优方法,详细讲解jvm的原理以及常用调优手段

    jmap -dump:format=b,file=heapdump.hprof Pid堆栈文件分析工具

    生成堆转储文件后,我们通常会使用专门的内存分析工具来解析和分析这些数据,以发现可能存在的内存泄漏、过大对象或不合理的对象引用等问题。MAT(Memory Analyzer Tool)就是这样的一个强大的分析工具,它是Eclipse...

    JVM监控工具使用入门

    本文将详细介绍JDK自带的一些强大的JVM监控工具,包括jconsole、jvisualvm以及Oracle JRockit Mission Control (JRMc),并指导如何利用这些工具进行本地和远程JVM监控。 #### 监控工具介绍 ##### jconsole ...

    JVM crash 错误日志分析

    3. **`jhat`或`VisualVM`**:这些是更强大的内存分析工具,可以对`hprof`文件进行可视化分析,找出内存占用高的对象。 4. **源码分析**:对于开源的JVM实现,如OpenJDK,可以直接阅读源码来理解崩溃原因。 在分析...

    java内存分析工具dumpAnalyzer

    1. **生成dump文件**:当应用出现性能问题时,可以使用JDK自带的`jmap`命令或者操作系统的工具生成堆转储文件。 2. **打开dumpAnalyzer**:导入生成的dump文件到dumpAnalyzer中,启动分析。 3. **分析与诊断**:...

    sun jdk7 32位windows

    最新版 32位 windows sun jdk7 开发必备

Global site tag (gtag.js) - Google Analytics