0.分类
线程 | jstack |
内存 | jmap |
性能 | jstat |
1.查找到Jvm的进程id,以后所有命令基本都需要
jps
jps -
v
jps -q
jps -m
jps -l
jps |
grep
'Bootstrap'
|
awk
'{print $1}'
|
|
2.jstat命令使用
jps -opt pid -h n (每隔多少行出现行头)interval(间隔多久) count(多少次)
jstat -gcutil pid 1000
jstat -gccapacity pid 1000
jstat -class pid
jstat -compiler pid
jstat -gc pid
jstat -printcompilation pid
jstat -gccause pid
|
3.jinfo可以输出并修改运行时的java 进程的参数
jinfo -opt pid
jinfo pid
jinfo -flag MaxPermSize pid
jinfo -flag +PrintGCDetails 2000
|
4.jmap打印出某个java进程内存内的,所有‘对象’的情况
jmap -opt pid
jmap -dump:
format
=b,
file
=
test
.bin pid
jmap -finalizerinfo pid
jmap -heap pid
jmap histo:live pid |
head
-n 23
jmap -permstat pid
|
5.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息
jstack -opt pid
jstat pid > jstat01.log
jstat pid |
grep
-C 10 pid(16进制转换之后)
|
转换工具 http://tool.oschina.net/hexconvert
dump 文件里,值得关注的线程状态有:
死锁,Deadlock(重点关注)
执行中,Runnable
等待资源,Waiting on condition(重点关注)
等待获取监视器,Waiting on monitor entry(重点关注)
暂停,Suspended
对象等待中,Object.wait() 或 TIMED_WAITING
阻塞,Blocked(重点关注)
停止,Parked
参考:
1.http://blog.youkuaiyun.com/fenglibing/article/details/6411951
2.http://xianqi-h.iteye.com/blog/1346491
3.http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html
4.http://fengbin2005.iteye.com/blog/2167316