标签:
本文对JVM的性能监控方法做整理。
持续更新中… …
JVM Heap Analysis Tool,与jmap搭配使用,用于分析heapdump文件,会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果。
Stack Trace for Java,显示虚拟机当前时刻的线程快照,也称为threaddump或javacore文件。即每一条线程正在执行的方法堆栈的集合,通过该命令一般用于检测线程长时间停顿原因,死锁,死循环,请求外部资源等待等导致线程长时间停顿的原因。
这里写了个生产者消费者的代码用于测试,也就是PCTest,共有3个生产者和3个消费者,每次生产的节点都有一个byte[1024]用于占内存。连接之后,可以看到概述,然后每个页面也可以看到具体的相关信息:
VisualVM功能和jconsole差不太多,不过提供了一个更为好看的界面,这是启动时各个进程的情况。
VisualVM提供和jconsole一样的对内存使用情况的概述,以及线程情况的概述
还有其他一些功能,这里就不在赘述。
首先需要安装Eclipse Memory Analyzer插件,通过Eclipse的Install from site进行安装,如图所示:
还是用生产者消费者程序作为样例,配置好以下jvm参数:
-Xmx10m -Xms10m -XX:+HeapDumpOnOutOfMemoryError
为了更快的发生内存溢出,也将每个节点的内存设置为了1M大小,程序运行之后,很快就发生了OOM错误
从上面可以看出,内存溢出的时候,生成了堆存储快照
Dumping heap to java_pid8056.hprof …
然后在工程目录下,可以看到该堆存储快照
直接双击打开,可以选择默认的让插件自己进行可疑内存泄露分析,根据堆的大小,在一定时间内会出结果,如下:
这是堆中各个线程的使用内存的情况,在这个之下,还有插件分析的结果:
通过Details信息,可以查看具体的信息
这里面shallow heap代表对象本身所占的空间,retained heap代表如果把这个对象给gc了,可以收回多少空间
[1]《深入理解Java虚拟机》第二版,周志明著
JAVA程序员养成计划之JVM学习笔记(3)-JVM性能监控
标签:
原文地址:http://blog.csdn.net/tmeteorj/article/details/51172680