jvm内存使用情况分析工具。
jstat -gcutil pid
图中参数含义如下:
S0 — Heap上的 Survivor space 0 区已使用空间的百分比 S1 — Heap上的 Survivor space 1 区已使用空间的百分比 E — Heap上的 Eden space 区已使用空间的百分比 O — Heap上的 Old space 区已使用空间的百分比 P — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒) FGC — 从应用程序启动到采样时发生 Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒) GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
详细介绍:http://blog.163.com/bobile45@126/blog/static/9606199220139303343415/
显示当前环境下正在运行的java应用
4288 (no name ,maybe it's eclipse)
4264 MessageServer (my custom java project)
4448 Jps
是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。
使用方法 jmap -histo pid。如果使用SHELL ,可采用jmap -histo pid>a.log日志将其保存到文件中,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -dump:format=b,file=outfile 3024可以将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具)。
jmap -J-d64 -heap pid //64位环境下
jmap -finalizerinfo 3772 // 打印正等候回收的对象的信息
jmap –heap 3772 // 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况./
jmap–histo:live 3772 //只统计活的对象数量.
eclipse 内存分析工具
http://blog.csdn.net/fenglibing/article/details/6298326
1、C:/>jps
3504 Jps
3676 Bootstrap
3496 org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
2、调用jmap工具得到信息,将heap信息dump到本地文件heap.bin中(默认一hprof)
C:/>jmap -dump:format=b,file=heap.bin 3676
Dumping heap to C:/heap.bin ...
Heap dump file created
3、通过mat工具导入上面生成的内存dump文件
dump运行的线程信息
jstack命令的语法格式: jstack <pid>。可以用jps查看java进程id。这里要注意的是:
1. 不同的 JAVA虚机的线程 DUMP的创建方法和文件格式是不一样的,不同的 JVM版本, dump信息也有差别。本文中,只以 SUN的 hotspot JVM 5.0_06 为例。
2. 在实际运行中,往往一次 dump的信息,还不足以确认问题。建议产生三次 dump信息,如果每次 dump都指向同一个问题,我们才确定问题的典型性。
http://jameswxx.iteye.com/blog/1041173
java -XX:+PrintFlagsInitial参数
http://blog.csdn.net/java2000_wl/article/details/8042010
参考:http://blog.lichengwu.cn/java/2015/04/06/case-of-hashmap-in-concurrency/
http://blog.csdn.net/feihong247/article/details/7874063