java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java虚拟机(JVM)的自带工具

Java虚拟机(JVM)的自带工具使用详解

作者:jpq+

文章介绍了Java开发中常用的几个工具及其基本用法,包括jps、jstat、jinfo、jmap、jhat和jstack,这些工具帮助开发者监控和分析Java应用程序的性能和内存使用情况,对于排查问题和优化性能非常有帮助

jps

JVM进程状态工具,用于查看进程的基本信息。JPS是Java Virtual Machine Process Status Tool的缩写,它是Java提供的一个用于查看所有Java进程的命令行工具。

jstat 的各种命令

jstat 是JVM统计监控工具,用于查看堆、GC(垃圾回收)等详细信息。

jstat -gc : 显示垃圾收集统计信息,包括新生代、老年代、永久代等区域的使用情况和垃圾回收次数。

以下是 jstat -gc 命令的一般用法:

jstat -gc <pid> [interval] [count]

其中, 是目标Java进程的进程ID,[interval] 是采样间隔(以毫秒为单位),[count] 是要显示的样本数量。如果不指定 [interval] 和 [count],则默认情况下会持续输出垃圾收集统计信息,直到手动停止。

例如,要查看进程ID为12345的Java虚拟机的垃圾收集统计信息,每隔1000毫秒(1秒)采样一次,共采样10次,可以运行以下命令:

jstat -gc 12345 1000 10

这将输出类似以下格式的数据:

 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
 0.0   512.0    0.0    0.0   4096.0   4096.0     8192.0     8192.0   1024.0  768.0  2048.0 2048.0    10    0.123   2      0.045   0.168

每一列的含义如下:

jstat中的其他命令:

jinfo

Java配置信息工具,可以查看配置参数信息,还支持部分参数的运行时修改。

使用jinfo命令查看Java应用程序的运行时属性,可以输入以下命令,其中 pid是Java应用程序的进程ID 并输出对应名称的参数:

jinfo  -flag name  <pid>

jmap

Java内存映射工具,用于分析堆内存,还能够dump堆内存快照。

jmap -histo 23173

该命令将会显示进程ID为23173的Java进程的堆内存中各个对象的数量和占用的内存大小。

这个命令可以帮助开发者了解当前Java进程的内存使用情况,从而找出潜在的内存泄漏或者优化内存使用。

jhat

Java堆分析工具,用于解析堆内存的dump文件。当使用jmap或其他方法生成Java的堆文件后,可以使用jhat进行分析。

运行jhat命令后,它会解析堆转储文件并启动一个Web服务器,用户可以通过浏览器访问并查看堆的情况。

在HTML页面上,jhat提供了多种功能,如显示所有类包括平台类、从根集能引用到的对象、显示每个类的实例数量、堆实例的分布表以及执行对象查询语句等。

jhat一般与jmap搭配使用,用于分析jmap生成的堆转储快照。

jstack

Java堆栈跟踪工具,用于查看Java程序的堆栈信息,可以用来分析线程问题(如死锁)。

jstat提供了多种命令选项,可以详细查看堆内存各部分的使用量以及加载类的数量。

例如,使用jstat -class可以查看类加载统计信息,包括加载类的数量、所占用的空间大小以及未加载类的数量和所占用的空间。

jstat -class 23173
#显示如下:
Loaded  Bytes  Unloaded  Bytes     Time   
 19595 40567.9       10    10.3       8.20

jstat -compiler则用于显示JIT编译器的编译统计信息,包括编译数量、失败数量等。

jstat还可以用于监控垃圾回收情况。

例如:

使用jstat -gc可以查看年轻代和老年代的垃圾回收次数、回收消耗时间以及堆内存的使用情况。

通过这些统计信息,开发者可以了解JVM中垃圾回收器的行为,从而优化应用程序的性能。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文