Java x_java 的性能分析 java -Xrunhprof:heap

HPROF又什么是?HPROF是J2SE自带的一个简单的profiler

agent。 他是一个动态链接库文件,监控CPU的使用率,Heap分配情况等。将这些信息输出到文件或到socket。

java –Xrunhprof

ToBeProfiledClass [:help]|[:=,

...]

例如:

>java

-Xrunhprof:heap=all

org.colimas.jni.test.JniTest

在当前目录会生成java.hprof.txt文件。文件内记载了JVM运行时Heap的运行情况

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

2008-10-14 11:27

Sun

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

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

HProf使用方法

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

· 使用kill -3

或退出WeblogicServer均会生成java.hprof.txt文件,直接打开此文件便可分析JVM的具体运行情况。

tomcat的生成在bin目录下

从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.(InflaterInputStream.java:71)

java.util.zip.ZipFile$1.(ZipFile.java:240)

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值