1先用jps找到java程序的id
2top -H -p pid 找到目标java服务中的占用较高的线程 记录其pid
3 printf '%x\n' pid 得到nid
4接着直接在jstack中找到相应的堆栈信息jstack pid |grep 'nid' -C5 –color
5cat jstack.log | grep "java.lang.Thread.State" | sort -nr | uniq -c 查找自己想要的日志
6使用jstat -gc pid 1000命令来对gc分代变化情况进行观察,1000表示采样间隔(ms),
S0C/S1C、S0U/S1U、EC/EU、OC/OU、MC/MU分别代表两个Survivor区、Eden区、老年代、元数据区的容量和使用量。YGC/YGT、FGC/FGCT、GCT则代表YoungGc、FullGc的耗时和次数以及总耗时。
7vmstat pid
cs(context switch)一列则代表了上下文切换的次数。
8JMAPjmap -dump:format=b,file=filename pid导出dump文件 使用Jprofile或者mat(Eclipse Memory Analysis Tools)导入文件进行具体分析