示例——CPU占用高
- top —— 找到CPU占用最高的进程id【pid】
- top -Hp {pid} —— 消耗CPU较高的进程pid中找到占用最高的线程id【tid】
- printf '%x/n' {tid} —— tid 转化为16【tid_16】进制
- jstack {pid} | grep {tid_16} -A 30 查看堆栈信息定位
示例——YGC频繁
- top —— 找到CPU占用最高的进程id【pid】
- jmap -histo {pid} | head -n 20 —— 查看内存最高的对象
- jmap -histo:live {pid} > file —— dump下来对象占用大小(慎用!!!容易导致full GC
问题——CPU经常100%
- 一定有线程在占用系统资源
- 找出哪个进程cpu高(top)
- 找出哪个线程cpu高(top -Hp)
- 到处线程堆栈(jstack)
- 找出哪个方法(栈帧)消耗时间(jstack)