Board logo

标题: 用于 PowerPC 上的 Linux 的五个易用的性能分析工具(6) [打印本页]

作者: look_w    时间: 2017-11-18 21:24     标题: 用于 PowerPC 上的 Linux 的五个易用的性能分析工具(6)

Heap dumpheap dump 工具提供关于在 Java 堆中找到的对象的统计数据,包括每个类的对象数目,分配给每个类的对象的字节数,以及每个类的对象的平均大小(字节数)。另外的统计数据包括 Java 堆的总的大小,以及 Java 堆的起始和结束地址。heap dump 工具可以与 IBM 的 32 位和 64 位 Runtime Environment for Linux v1.4.0 或更新的版本一起使用,应该也可以与其他非 IBM JVM 一起使用,因为它使用的是标准的 JVM Profiler Interface(JVMPI)事件。
类似于 JLM,heap dump 也是 Java 剖析器所提供的一个专门功能。rtdriver 应用程序是 Java 剖析器的一个接口。通过rtdriver 接口,在任何时刻都可以请求生成 heap dump 报告。可以在 /piperf/bin 目录中找到 rtdriver 应用程序和在 PowerPC 上被实现为 libjprof.so 的 Java 剖析器。
如何运行 heap dump?如何解读 heap dump 报告?heap dump 报告包括两个文件,一个 log-hd 文件和一个 log-hdcnm 文件。首先查看 log-hd 文件。其内容类似如下:         
1
2
3
4
5
6
7
# HEAPDUMP
# level             1
# begin             0x8004ea3090
# end               0x8004ed11db
# num_traces        5
# traces            0x7fe05e0cc0
# HEAPDUMP SIZE  =  188747




HEAPDUMP SIZE 标签指明的是 Java 堆的总的大小,在本例中是 188747 个字节,以 10 进制格式给出。Java 堆的范围是从“begin”标签指明的内存地址到“end”标签指明的内存地址。在本例中,堆的范围是从 0x8004ea3090 到 0x8004ed11db。
现在来查看 log-hdcnm 文件。这里是一段摘录:         
1
2
3
4
5
6
7
8
9
MaxObjectSize : 19088
   
OBJS    BYTES     AVER      %
4765 -539437512 -113208.0  100.0
OBJS    BYTES     AVER     %    CLASS
====    =====    =====  =====   =====
1331   128512     96.0   -0.0   CHAR[]
  24    42160   1756.0   -0.0   BYTE[]
1115    35680     32.0   -0.0   java/lang/String




首先您将会看到 MaxObjectSize 域,它指的是在 Java 堆中找到的最大对象的大小(单位是字节)。然后是描述在 Java 堆中找到的所有对象的统计数据。首先给出堆中所有对象的一个总结,然后分别是各个类的统计数据。例如,考虑 CHAR[] 类。在堆中有 CHAR[] 类的 1331 个对象。分配给那些 CHAR[] 对象的总的字节数是 128512,平均到每个 CHAR[] 对象是 96 个字节。% 栏中的数字指明了 CHAR[] 对象正在使用的空间占总的 Java 堆空间的百分比。其他每个类的统计数据也可以以同样的方式进行解读。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0