快捷搜索:  汽车  科技

jvm出问题怎么办:这几款 JVM 故障诊断处理工具

jvm出问题怎么办:这几款 JVM 故障诊断处理工具-gcold: 监控老年代的GC状况-gcnew: 主要是监控新生代的GC状况-class: 监控类装载,卸载次数和总空间以及加载类的耗时-gc: 监控java堆的情况-gcutil: 主要输出各个空间使用的百分比

虚拟机统计信息监控工具(jstat)

用于监控虚拟机运行状态信息的命令行工具,可以提供内存,垃圾收集等运行时的数据

命令格式:

jstat [option vmid] [interval [s|ms] [count]]

interval表示间隔多久时间查询一次,count表示查询多少次,比如:每个两秒查询一次进程52412的垃圾收集情况,共查询5次

jstat -gc 52412 2s 5

jvm出问题怎么办:这几款 JVM 故障诊断处理工具(1)

常用的选项:

  • -class: 监控类装载,卸载次数和总空间以及加载类的耗时

  • -gc: 监控java堆的情况

  • -gcutil: 主要输出各个空间使用的百分比

  • -gcnew: 主要是监控新生代的GC状况

  • -gcold: 监控老年代的GC状况

  • -compiler: 输出JIT编译器编译过的方法和耗时信息

查看堆空间的使用百分比: jstat -gcutil 52412 2s 5

jvm出问题怎么办:这几款 JVM 故障诊断处理工具(2)

java配置信息工具(jinfo)

可以通过jinfo实时的查看和调整虚拟机的各项参数;可以通过jps -v查看虚拟机启动时候指定的参数信息,如果需要查看未显示指定的参数默认值也可以通过jinfo -flag

jinfo -flag CMSInitiatingOccupancyFraction 52412

jvm出问题怎么办:这几款 JVM 故障诊断处理工具(3)

jinfo除了可以查看参数以外,还可以在运行时修改一些允许被修改的参数

Java内存映像工具(jmap)

jmap用于生成JVM堆的快照文件,除了使用jmap工具,我们通常也会在配置JVM的启动参数-XX: HeapDumpOnOutOfMemoryError让JVM在发送内存溢出之后自动生成dump文件。

命令格式:jmap [option] vmid

比如生成java堆的快照文件

jmap -dump:live format=b file=/Users/huaan9527/Desktop/heap.hprof 59950

常用的选项:

  • -F: 当虚拟机对-dump选项没有响应时可用选择使用这个参数强制生成快照

  • -histo: 显示出堆中对象统计信息。

堆栈跟踪工具(jstack)

用于生成JVM当前线程的快照信息。通常用于查询什么原因导致线程长时间的停顿,比如:线程死循环,死锁,等待网络/IO

命令格式:jstack [option] vmid

常用的选项:

  • -F: 当请求不被响应时强制输出

  • -l:除了显示堆栈外,还需要显示锁的信息

  • -m: 如果调用到本地方法,显示出C/C 的堆栈

jvm出问题怎么办:这几款 JVM 故障诊断处理工具(4)

VisualVM 可视化工具

VisualVM是目前JDK自带的功能最强的运行监视和故障处理程序,在VisualVM之前,JDK也提供了一款可视化工具JConsole,由于JConsole的所有功能在VisualVM都有,所以可视化工具大家几乎都选择使用VisualVM。

VisualVM本身是基于Netbean开发的,所以具备了插件扩展功能,安装插件之后上面介绍的所有命令行的工具的功能都可以在VisualVM中使用。可以在在JAVA_HOME/bin目录下执行jvisualvm启动。

  • 插件安装 默认情况VisualVM提供的功能很少,需要我们在菜单栏->工具->插件里面安装插件,我这是全部插件都安装了

jvm出问题怎么办:这几款 JVM 故障诊断处理工具(5)

猜您喜欢: