Java虚拟机(JVM)的自带工具

在这里插入图片描述

jps

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

  • jps: 默认情况下,不带任何参数运行jps将显示所有正在运行的Java进程的PID和主类名。

  • jps -l: 使用-l选项可以显示完整的包名和类名

  • jps -m: 使用-m选项可以显示传递给Java进程的启动参数。

  • jps -v: 使用-v选项可以显示传递给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

每一列的含义如下:

  • S0C: Survivor 0区的容量(字节)
  • S1C: Survivor 1区的容量(字节)
  • S0U: Survivor 0区已使用的空间(字节)
  • S1U: Survivor 1区已使用的空间(字节)
  • EC: Eden区的容量(字节)
  • EU: Eden区已使用的空间(字节)
  • OC: Old区的容量(字节)
  • OU: Old区已使用的空间(字节)
  • MC: Metaspace区的容量(字节)
  • MU: Metaspace区已使用的空间(字节)
  • CCSC: Compressed Class Space区的容量(字节)
  • CCSU: Compressed Class Space区已使用的空间(字节)
  • YGC: 年轻代垃圾回收次数
  • YGCT: 年轻代垃圾回收总耗时(秒)
  • FGC: Full GC次数
  • FGCT: Full GC总耗时(秒)
  • GCT: 垃圾回收总耗时(秒)

jstat中的其他命令:

  • jstat -gccapacity : 显示各个内存区域的容量。

  • jstat -gcutil : 显示垃圾收集统计信息的百分比形式,更直观地展示内存区域使用情况。

  • jstat -gccause : 显示最后一次垃圾回收的原因。

  • jstat -gcnew : 显示新生代的垃圾收集统计信息。

  • jstat -gcold : 显示老年代的垃圾收集统计信息。

  • jstat -gcpermcapacity : 显示永久代的容量。

  • jstat -compiler : 显示即时编译器的编译统计信息。

  • jstat -printcompilation : 显示即时编译器的编译请求和编译耗时。

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中垃圾回收器的行为,从而优化应用程序的性能。

  • 34
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

π克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值