竹笋

首页 » 问答 » 常识 » 一些JDK自带的性能分析利器
TUhjnbcbe - 2025/1/5 23:41:00
老牌白癜风医院 https://wapjbk.39.net/yiyuanzaixian/bjzkbdfyy/

有时候碰到服务器CPU飙升或者程序卡死之类的问题,一般都不太好定位。这类bug一般都隐藏的比较深并且还可能是偶发性的,比较棘手。

对于此类问题,一般我们都有固定的分析流程。借助于JDK自带的一些分析工具,比如jstack、jmap、jstat一类的命令行工具,除此之外,还有jconsole、mat、jvisualvm这些图形界面分析工具。

这篇文章基于JDK8,操作系统是macOS12.0.1

1、一些命令行分析工具#

这些命令行分析工具都在jdk/bin目录下

解压jdk/lib/tool.jar可以得到上述工具的class文件

1.1jps-JVMProcessStatusTool#

作用:列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID。

第一个参数说明:

-q:默认携带的参数,显示进程ID。

-m:显示进程ID,主类名称,以及传入main方法的参数。

-l:显示进程ID,主类全名。

-v:显示进程ID,主类名称,以及传入JVM的参数。

-V:显示进程ID,主类名称。

[-mlvV]可以任意组合使用。

第二个参数说明:

hostid:服务器的ip地址。不指定的情况下,默认为当前服务器。如果要查看其他机器上的JVM进程,需要在待查看机器上启动jstatd。

1.2jstat-JVMStatisticsMonitoringTool#

作用:监视虚拟机各种运行状态信息,可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

命令格式:jstat-

参数说明:

第一个参数:option,代表用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集和运行期编译情况。具体选项如下:

-class:显示有关类加载器行为的统计信息。

-

1
查看完整版本: 一些JDK自带的性能分析利器