微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

深入理解JVM虚拟机---工具性能监控,故障处理

一、命令行工具

1 jps

使用ps也能查看,但是如果启动多个虚拟机进程的话,需要jps现实主类的功能来区分开

2 jstat

jvm Stastics Monitoring Tool

显示 本地or远程 jvm进程中的类装载,内存,垃圾收集,JIT编译等运行数据
jstat [option vmid [interval[s|ms] [count]] ]

也可以使用VisualVm等可视化工具监视

3 jinfo

查看配置信息
jinfo [option] pid

4 jmap

jmap (Memory Map for java) 生成堆转储快照(称heapdump 或者 dump),
查询finalize执行队列,Java堆和永久代详细信息。如空间使用率,当前使用的哪种收集器等。
也可以使用 -XX:+HeapDumpOnOutOfMemoryError ,oom后自动生成Dump
-XX:+HeapDumpOnCtrlBreak [ctrl]+[break] 让jvm生成dump
linux 还支持 kill -3

5 jhat

JVM Heap Analysis Tool 与 jmap配合使用
http://localhost:7000

dump文件分析:

6 jstack

Stack track for JAVA 生成虚拟机当前时刻的线程快照(称为threaddump 或者 javacore 文件
定位出现长时间停顿的原因,如线程间死锁,死循环,请求外部资源导致的长时间停顿

Thread 的getAllStackTraces 可以试试

7 HSdis插件

JIT生成代码反汇编 Hotspot
字节码:
-XX:+PrintAssembly —> HSdis —> 动态生成的本地代码还原为汇编代码输出

配置

-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly

使用jdk8 需要安装 hsdis-amd64.dylib ,使用jdk15,直接输出汇编代码

总结

二、可视化工具

1.JConsole

内存监控
线程监控

2.VisualVM

很强大!!! 性能分析(Profiling) 运行时监控

兼容范围与插件安装:

插件中心地址:
VisualVM java.net/pluginscenters.html

Btrace 动态日志跟踪,可以动态加入原本并不存在的调试代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐