在java应用开发过程中,jvm相关的问题总是无法绕过,同时又是比较棘手难以解决的,但是作为一个java开发工程师来说,还是需要具备一定的问题分析解决能力。在jdk中,已经有了不少可以使用的工具,方便我们排查问题。
查看线程:
jstack -l pid
-l 输出锁的附加信息
jstack pid >> jstack.log 导出成文件
多次采集观察线程状态
死锁,Deadlock(重点关注)
等待资源,Waiting on condition(重点关注)
• 等待获取监视器,Waiting on monitor entry(重点关注)
阻塞,Blocked(重点关注)
• 执行中,Runnable
• 暂停,Suspended
• 对象等待中,Object.wait() 或 TIMED_WAITING
• 停止,Parked
查看gc情况:
jstat -gc pid
S0 — Heap上的 Survivor space 0 区已使用空间的百分比
S0C:S0当前容量的大小
S0U:S0已经使用的大小
S1 — Heap上的 Survivor space 1 区已使用空间的百分比
S1C:S1当前容量的大小
S1U:S1已经使用的大小
E — Heap上的 Eden space 区已使用空间的百分比
EC:Eden space当前容量的大