java问题排查命令
java问题排查命令
jps
:查看java进程
jmap
:导出堆详细信息
(与jhat
一起使用)
jhat
:分析Java堆
的命令(与jmap
一起使用)
jstack
:可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。
通常结合 ps
、top
、printf
、grep
命令使用。
printf "%x\n" 21742
得到21742的十六进制值为54ee。
dump 文件里,值得关注的线程状态有:
- 死锁,
Deadlock
(重点关注)- 执行中,Runnable
- 等待资源,
Waiting on condition
(重点关注)- 等待获取监视器,
Waiting on monitor entry
(重点关注)- 暂停,Suspended
- 对象等待中,Object.wait() 或 TIMED_WAITING
- 阻塞,
Blocked
(重点关注)- 停止,Parked
jinfo
:输出并修改运行时的java 进程的opts,用于输出JAVA系统参数及命令行参数
jstat
:用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计
- 类的加载及卸载情况
- 查看新生代、老生代及持久代的容量及使用情况
- 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间
- 查看新生代中Eden区及Survior区中容量及分配情况等
Option | Displays... |
---|---|
class | 用于查看类加载情况的统计 |
compiler | 用于查看HotSpot中即时编译器编译情况的统计 |
gc | 用于查看JVM中堆的垃圾收集情况的统计 |
gccapacity | 用于查看新生代、老生代及持久代的存储容量情况 |
gccause | 用于查看垃圾收集的统计情况(这个和-gcutil选项一样),如果有发生垃圾收集,它还会显示最后一次及当前正在发生垃圾收集的原因。 |
gcnew | 用于查看新生代垃圾收集的情况 |
gcnewcapacity | 用于查看新生代的存储容量情况 |
gcold | 用于查看老生代及持久代发生GC的情况 |
gcoldcapacity | 用于查看老生代的容量 |
gcpermcapacity | 用于查看持久代的容量 |
gcutil | 用于查看新生代、老生代及持代垃圾收集的情况 |
printcompilation | HotSpot编译方法的统计 |
扫描公众号,关注更多信息
---------------------------------------------------------------------------------我是分割线--------------------------------------------------------------------------to be a better me, talk is cheap show me the code
版权所有,转载请注明原文链接。
文中有不妥或者错误的地方还望指出,以免误人子弟。如果觉得本文对你有所帮助不妨【推荐】一下!如果你有更好的建议,可以给我留言讨论,共同进步!
再次感谢您耐心的读完本篇文章。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------