JVM常用工具

JVM常用工具

1、JPS 查看Java进程

简化版的 ps -ef | grep java
在这里插入图片描述
一切操作的基础,需要先获取进程号。

-l 参数,显示应用程序主类完整全路径
在这里插入图片描述
-v参数,列出应用程序启动时的JVM启动参数
在这里插入图片描述

2、JStat

查看JVM运气时期的一些状态信息。如查看类型的加载,垃圾回收等。主要用来看一段时间的GC及内存使用情况。

使用方式: jstat -gc 进程ID 时间 次数

每1s时间查看一次JVM的垃圾收集情况,一共查看10次对应的命令为:
jstat -gc xxx 1000 10
在这里插入图片描述
各项信息说明:

  • S0C : 第一个幸存区的空间
  • S1C : 第二个幸存区空间
  • S0U : 第一个幸存区已经使用的空间
  • S1U : 第二个幸存区已经使用的空间
  • EC : Eden区的空间
  • EU : Eden区已经使用的空间
  • OC : old区的空间
  • OU : old区已经使用的空间
  • MC : 方法区的空间
  • MU : 方法区已经使用的空间
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • YGC:young gc的次数
  • YGCT: yong gc 花费的时间
  • FGC : full gc 的次数
  • FGCT:full gc花费的时间
  • GCT : 垃圾回收消耗总时间
3. Jinfo 查看和修改JVM的参数

使用Jinfo可以在应用程序运行期间动态改变参数,如 开启打印GC日志:
jinfo -flag +PrintGC 进程Id
在这里插入图片描述
因为打印GC日志是需要消耗一定资源,为了不影响性能,一般都是关闭的,但是当出现问题的时候,就可以通过该命令打印GC日志信息。另外查看完毕后一定记得关掉。
在这里插入图片描述

4、Jmap

生成堆快照信息,查看堆的内存使用信息。
jmap -heap < pid >
在这里插入图片描述
jmap -histo < pid >
显示每个class的实例数,及内存占用
jmap -histo:live pid 只显示存活的。
在这里插入图片描述
-dump 生成的堆转储快照

在这里插入图片描述

5、Jhat

分析dump文件 jhat dump文件

6、jstack

分析线程状态信息。

### JVM常用命令及功能介绍 #### 1. **jps (Java Virtual Machine Process Status Tool)** `jps` 是一种用于显示当前系统中所有 Java 进程的状态的工具。它可以帮助开发者快速定位正在运行的 Java 应用程序以及其对应的进程 ID(PID)。通过 `jps -v` 参数,还可以进一步查看启动该应用程序时所使用的 JVM 参数和选项[^1]。 ```bash $ jps -lv ``` 上述命令将列出所有 Java 进程及其完整的类路径和传递给 JVM 的参数。 --- #### 2. **jinfo (Java Configuration Information)** `jinfo` 工具允许用户动态获取并调整正在运行的 Java 虚拟机实例的相关配置信息。这包括但不限于 JVM 启动时指定的各种参数设置。此外,在某些特定场景下,也可以利用此工具来修改部分 JVM 配置项[^2]^,^[^4]。 例如,要查询某个 PID 对应的 JVM 所加载的所有参数: ```bash $ jinfo -flags <pid> ``` 如果需要生成堆转储文件,则可以通过如下方式实现;不过需要注意的是,这一操作可能带来一定的性能开销,尤其是在大内存环境中更需谨慎对待: ```bash $ jmap -dump:live,format=b,file=heap.bin <pid> ``` 尽管这里提到的是 `jmap`, 它同样属于 JDK 自带的一系列诊断工具之一,与本节讨论的内容密切相关。 --- #### 3. **jstat (Java Virtual Machine Statistics Monitoring Tool)** 作为一款强大的监控利器,`jstat` 提供了关于 JVM 性能统计方面的详尽数据,涵盖了诸如垃圾回收行为、方法区使用状况等多个维度的信息展示服务[^3]. 用户能够依据实际需求选取不同的观测角度来进行深入分析: - `-gcutil`: 显示 GC 活动概览; - `-gccapacity`: 展现各代对象存储区域容量详情; - `-class`: 关注类加载器的工作表现等等... 下面给出一段简单的脚本例子以便更好地理解如何运用这些选项完成周期性的采样工作: ```bash #!/bin/bash for i in {1..10}; do echo "Sample $i" jstat -gcutil $(pgrep java) 1000 1 | awk '{print strftime("%Y-%m-%d %H:%M:%S"), $0}' done ``` 以上代码片段每隔一秒打印一次目标进程中有关垃圾收集利用率的变化趋势记录下来,并附加时间戳便于后续追踪审查之便. --- #### 4. **其他重要说明** 值得注意的是,尽管目前市面上存在众多针对 JVM 调优设计得更加友好的图形界面型产品可供选择,但从原理层面出发掌握好基础命令行交互手段依旧十分必要。因为它们构成了更高层次解决方案的基础构建模块. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值