jdk1.6 相关性能分析工具使用

之前一直从事.net方向的开发工作,一直是用windbg做问题定位工具,突然转向java有两眼一抹黑的感觉。前段时间出了次故障后看同事用些java命令看thread stack和heap dump后来有上网看了些资料,大概总结下吧,以后用起来方便。以下这些指令都是随sun jdk1.6发布,安装后就有。

1. jps 查看当前系统正在运行的java进程信息

常用参数 -lm和-lvmm
-lm 可查看运行时输入的jar包信息
-lvmm 可查看jar信息和启动是指定的最大和最小jvm堆大小

2. jstat 查询java进程gc信息(类似.net clr的性能计数器)

用法和主要参数:
jstat -gcutil <pid>
查询java进程gc信息,包括新生代、老生代内存占用百分比gc次数和gc时间还有full gc次数和时间总gc时间具体的每项含有有:
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比

jstat -class <pid>
查询当前进程jvm load的class文件明细

3. jstack 查询java进程当前线程堆栈信息(类似.net SOS.dll提供的CLRStack命令)

用法和主要参数
jstack -l <pid>
打印当前java进程所以线程堆栈信息,不hung进程
jstack -F <pid>
hung进程

4. jmap 查询java进程堆内存使用情况,可以抓内存的dump(类似.net SOS.dll提供的dumpheap)

用户和主要参数
jmap -heap <pid>
输出当前堆的概要信息
jmap -histo <pid>
输出当前进程内所有对象的统计信息包括对象占用内存和对象个数(类似windbg dumpheap -stat)
jmap -histo:live <pid>
输出进程当前状态存活对象统计信息
jmap -dump:live,format=b,file=heap.bin <pid>
挂到进程抓一个内存的coredump 保存为heap.bin
heap.bin就可以用visualvm工具分析了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值