[关闭]
@xtccc 2015-12-24T21:02:53.000000Z 字数 990 阅读 2213

使用Eclipse Memory Analyzer

Java


参考:



Eclipse Memory Analyzer (MAT) 能够将对objects的引用情况进行可视化展现,进而帮助开发者发现内存相关的问题(如内存泄露,内存占用过高等)。

产生heapdump 数据文件


什么是 heapdump ?

A heap dump is a snapshot of the complete Java object graph on a Java application at a certain point of time. It includes all objects, fields, primitive types and object references, and is stored in a binary format called HPROF .

对于SUN JVM而言,生成heap dump的几种方法:
1. 在发生 java.lang.OutOfMemory 异常时,由JVM自动生成
2. 使用命令行工具 jmap
3. 使用 JMSjconsole

发生OutOfMemeory时生成 heap dump

我们可以在启动Java app时添加参数 -XX:+HeapDumpOnOutOfMemoryError,使得当 OutOfMemoryError 异常发生时,JVM可以自动地在当前目录下生成一个heapdump文件,文件名为 java_pid.hprof 。 也可以通过参数 -XX:HeapDumpPath=path_to_file 来指定heapdump文件的路径及文件名。

对任意正在运行的Java app生成heapdump文件

如果知道正在运行的Java app的进程号pid,则可以通过下述命令为该Java app生成heapdump文件:

  1. > jmap -dump:file=path_to_file pid

注意:运行jmap命令的用户必须是pid进程的用户,否则可能会出现错误:“Unable to open socket file: target process not responding or HotSpot VM not loaded”

怎样知道Java app的process id?使用命令 jps

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注