【Java开发】之 JDK 自带的 JVM 性能调优监控工具
来源:http://www.tudoupe.com时间:2022-02-28
一、简介
JDK本身自带了许多JVM调优监控工具,可以帮助我们查看Java应用程序的进程、线程、内存栈等信息。这些工具命令包括jps、jstack、jmap、jhat等等。
这些命令所在位置:
Linux:安装完JDK后,这些命令工具会默认放在/usr/bin/下,直接使用即可;Windows:在Windows下,这些命令工具在安装Java目录的jdk_xxx/bin/目录下,比如C:Program FilesJavajdk1.8.0_212bin,如果想要在控制台上使用的话,可以将改路径添加到环境变量Path中。
二、命令使用介绍
1、JPS
该命令用于打印输出当前JVM中运行的Java进程状态信息,命令格式为:
options:表示命令可选参数,支持以下选项:-q:仅显示pid;-m:查看进程pid及main方法参数;-l:打印程序对应JAR文件所在的完整路径名;-v:查看进程pid及JVM的参数;-h:打印帮助信息;
hostid:表示主机地址(包含协议、主机名、端口、服务名称),如果没有给出则默认为本地主机;
实例如下:
2、JSTACK
该命令用于查看指定Java进程pid的堆栈信息,命令格式为:
可选参数:
-l:长列表展示,打印锁的附加信息;-m:打印Java和底层C/C++框架的所有栈信息;-F:没有响应的时候强制打印栈信息;
实例如下:
以上只是堆栈信息的一部分内容,从内容中可以看到线程的运行状态为RUNNABLE,线程的运行状态有如下几种:
- NEW:未启动,不会出现在dump中;
- RUNNABLE:正在虚拟机中运行;
- BLOCKED:被阻塞,并等待监视器锁;
- WAITING:无限时等待其他线程释放锁;
- TIME_WAITING:有限时的等待其他线程释放锁;
- TERMINATED:已退出。
3、JMAP
该命令用于查看堆内存的使用情况,一般与jhat结合一起使用,命令格式为:
可选参数:
-heap:查看进程堆内存使用情况,包括使用的GC算法、堆配置参数和各代中堆内存使用情况;-histo[:live]:查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象;-dump:format=b,file=dumpFileName:把进程内存使用情况dump到文件中;
实例如下:
查看堆内存情况:
查看堆中对象数量:
生成dump文件:
4、JHAT
该命令用于访问Jmap命令生成的dump文件,使用浏览器访问,命令格式为:
常用可选参数:
-port:指定Jhat的HTTP服务端口,默认为 7000;
实例如下:
然后在浏览器中输入地址:localhost:7000(IP地址以运行 Jhat 命令所在服务地址为准):

5、JSTAT
该命令用于统计监测JVM,命令格式为:
其中:
vmid:为虚拟机ID,在Linux/Unix系统上一般就是进程ID;interval:为采样时间间隔;count:为采样数;
比如,下面命令为打印GC信息,采样时间间隔为 250ms,采样数为 3:
以上各列的含义为:
- S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used);
- EC、EU:Eden 区容量和使用量;
- OC、OU:年老代容量和使用量;
- PC、PU:永久代容量和使用量;
- YGC、YGT:年轻代 GC 次数和 GC 耗时;
- FGC、FGCT:Full GC 次数和Full GC 耗时;
- GCT:GC 总耗时;
我们需要明白关于JVM堆内存的布局关系:
- 堆内存 = 年轻代 + 年老代 + 永久代
- 年轻代 = Eden 区 + 两个 Survivor 区(From 和 To)
相关新闻
- 2022-08-04 WPF的由来
- 2022-08-04 Win11勒索软件防护怎么打开?Win11安
- 2022-08-04 Windows系统jdk的配置
- 2022-08-04 Windows10 OneNote怎么重新登录?如何重
- 2022-08-04 超好用的 Windows 效率工具推荐
- 2022-08-04 Windows如何在CMD或PowerShell中配置代理
- 2022-08-04 powershell和cmd对比
- 2022-08-04 【QT】Windows下QT下载安装
- 2022-08-04 windows下 C++ 实现类属性的get和set方
- 2022-08-04 Win11快速助手在哪里?Win11打开快速
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
