暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

JVM分析工具简介

IT那活儿 2022-11-03
1864

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

前 言

JDK是一个功能非常强大的Java开发套装,不仅给我们提供了Java运行环境,还给开发人员提供了许多有用的开发组件(位于bin目录中,如下图所示),对于我们运维人员来说,在我们出现一些内存,GC,线程等问题,JVM分析工具能够很好的帮助我们定位分析问题,我们可以利用jdk自带的jvm分析工具进行分析,比如jps,jinfo,jvisualvm,jconsole,jstat,jstack,jcmd,jmap等。当然也可以采用很多优秀的开源jvm分析工具进行分析,Arthas等。

常见自带的JVM分析工具


工具

类型

作用

jps

命令行

jvm进程状态工具,列出系统上jvm进程的pid

jinfo

命令行

jvm信息查看工具,查看jvm的各种配置信息

jvisualvm

图形界面

jvm综合监控工具,查看jvm基本信息,堆,栈,转储,内存,cpu以及gc等信息

jconsole

图形界面

jmx兼容的图形工具,用于监控jvm基本情况,查看MBean

jstat

命令行

jvm统计监控工具,附件到一个jvm进程上手机和记录jvm的各种性能指标数据

jstack

命令行

jvm栈查看工具,可以查看jvm进程的线程和锁信息

jcmd

命令行

jvm命令行调试工具,用于向jvm进程发送调试命令

jmap

命令行

jvm堆内存分析工具,可以查看jvm进程对象直方图,类加载统计以及做堆转储操作


JVM分析工具详解

1. jps

通过jps查看Java进程列表pid。如图所示能看到ASMain的pid为2977。

2. Jinfo

通过Java进程对应的pid,使用jinfo查看jvm各种配置信息。比如jdk版本,环境,路径,虚拟机名称,编码,堆栈等信息。

3. jvisualvm

jvisualvm是一个综合监控工具,查看jvm基本信息,堆,栈,转储,内存,cpu以及gc等信息。

打开图形化界面,找到对应执行方法程序可以查看相关资源配置信息。
  • 概述:可以看到堆栈信息以及系统参数等。

  • 监视:CPU(使用情况,垃圾回收情况),内存(堆大小,堆使用大小),类(类装入卸载数量),线程(活动线程,守护线程数量)。

  • 线程:当前所有线程执行状态,主要包括开启了那些线程,线程运行,休眠,等待,驻留,监视等信息。

  • 抽样器:CPU抽样(CPU样例与线程CPU时间)与内存抽样(堆柱状图与每个线程分配)。,

  • Profiler:CPU与内存性能分析。

4. jstat

jstat工具以命令行的方式,允许以固定的监控频次输出 JVM 的各种监控指标,比如使用 -gcutil 输出 GC 和内存占用汇总信息,每隔 5 秒输出一次,输出 100 次.

5. jstack

通过命令行工具 jstack,也可以实现抓取线程栈的操作,进行在线分析,一般情况我们会连续抓取三次,每隔五秒。

6. jmap

jmap jvm自带命令行工具,可用于了解系统运行时的对象分布。

jmap pid 查看基本信息。

查看堆信息,jmap -heap pid。

jmap -histo pid 查看一些class的使用情况。

jmap -histo:live pid >dump.txt 输出class信息到dump文件。



本文作者:程 红(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论