深入理解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 动态日志跟踪,可以动态加入原本并不存在的调试代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值