[转帖]【JVM】JDK命令行工具

jvm,jdk,命令行,工具 · 浏览次数 : 0

小编点评

**JDK命令行工具介绍** JDK提供了一系列命令行工具,可用于管理和分析 Java 应用程序的运行状态。这些工具可以用于查看和调整虚拟机的配置参数、监视虚拟机性能、生成内存快照等。 **常用工具介绍** 1. **jps**:用于查看虚拟机进程信息。 2. **jinfo**:用于查看和调整虚拟机的配置参数。 3. **jstack**:用于虚拟机堆栈跟踪。 4. **jstat**:用于查看虚拟机统计信息监视工具。 5. **jmap**:用于生成 Java 应用程序的堆快照和对象的统计信息。 6. **jhat**:用于分析虚拟机转储快照信息。 7. **mat**:用于分析内存dump后的分析工具。 8. **pstack**:用于查看 Java 进程的native栈。 9. **tail**:用于查看文本文件中的最后几行。 10. **find**:用于查找文本文件中的指定字符串。 11. **fgrep**:用于搜索文本文件中的指定字符串。 12. **awk**:用于处理文本文件中的数据。 **其他工具** 除了上述工具之外,JDK还提供了一些其他工具,例如: * **memorydump**:用于生成内存dump文件。 * **gperf**:用于查看 Java 堆外内存消耗。 * **JConsole**:用于简易地查看虚拟机状态。 * **JVisualvm**:用于更全面地查看虚拟机状态。 * **HA**:用于收集和分析虚拟机性能数据。 * **GCHisto**:用于生成虚拟机性能图。 * **GCViewer**:用于查看虚拟机性能图。

正文

在JDK/bin目录下我发现了许多命令行工具

这里写图片描述

这些命令有哪些作用呢,接下来我就来详细介绍一下

常用JDK命令行工具

命令名称全称用途
jstatJVM Statistics Monitoring Tool用于收集Hotspot虚拟机各方面的运行数据
jpsJVM Process Status Tool显示指定系统内所有的HotSpot虚拟机进程
jinfoConfiguration Info for Java显示虚拟机配置信息
jmapJVM Memory Map生成虚拟机的内存转储快照,生成heapdump文件
jhatJVM Heap Dump Browser用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户在浏览器上查看分析结果
jstackJVM Stack Trace显示虚拟机的线程快照

1. jps

(1) 定义:查看虚拟机进程信息

(2) 参数:

-q 只输出进程ID,不输出类的短名称
-m 输出传递给Java进程的函数
-l 输出主函数的完整路径
-v 显示传递给JVM的参数

(3)实例

这里写图片描述

2.jinfo

(1)定义:用于查看和调整虚拟机的配置参数

(2)参数

-flag 打印指定JVM的参数值
-flag [+]-] 设置指定JVM参数的布尔值
-flag = 指定JVM参数的值

(3)实例

这里写图片描述

这里写图片描述

3.jstack

(1)定义:虚拟机堆栈跟踪

(2)参数

-l 打印锁信息

-m 打印Java和native 的帧信息

-F 强制dump,当jstack没有响应时使用。

(3)实例
这里写图片描述这里写图片描述

4.jstat

(1)定义:查看虚拟机统计信息监视工具

(2)参数

-class 监视类装载,卸载数量,总空间以及类装载所耗费的时间

-gc 监视Java堆状况,包括Eden区,两个survivor区,老年代,永久代的容量,已用空间,GC时间合计等信息

-gccapacity 内容与-gc基本相同,但主要输出Java堆各个区域的最大最小空间

-gcutil 内容与-gc基本相同,但主要关注已使用空间占总空间的百分比

-gccause 内容与-gcutil基本相同,但主要关注已使用空间占总空间的百分比,并输出导致上一次GC的原因

-gcnew 监视新生代GC情况

-gcnewcapacity 内容与-gcnew基本相同,但主要输出使用到的最大最小空间

-gcold 监视老年代GC情况

-gcoldcapacity 内容与-gcnew基本相同,但主要输出使用到的最大最小空间

-gcpermcapacity 输出永久代使用到的最大最小空间

-complier 输出JIT 编译器编译过的方法耗时的信息

-printcompliter 输出已经被JIT编译的方法

(3)实例

这里写图片描述
每列的含义

  • S0C:第一个幸存区的大小
  • S1C:第二个幸存区的大小
  • S0U:第一个幸存区的使用大小
  • S1U:第二个幸存区的使用大小
  • EC:伊甸园区的大小
  • EU:伊甸园区的使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • MC:方法区大小
  • MU:方法区使用大小
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • YGC:年轻代垃圾回收次数
  • YGCT:年轻代垃圾回收消耗时间
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

5.jmap

(1)定义:生成Java应用程序的堆快照和对象的统计信息

(2)参数

-dump 生成Java堆转储快照,格式为: -dump:[live , ]format=b , file=,其中live子参数 说明只dump出存活的对象

-finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize方法的对象

-heap 显示Java堆详细信息,如使用哪种回收器,参数配置,分代状况等

-histo 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”

(3)实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jMb9Tqn3-1615415603986)(https://img-blog.csdn.net/20170624212413840?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmFpeWVfeGluZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

6. jhat

(1)定义:分析虚拟机转储快照信息

(2)参数:后面接文件路径

(3)实例

这里写图片描述

打开浏览器,输入网址:http://127.0.0.1:7000/

然后就可以看到(部分网页)
这里写图片描述这里写图片描述

其他工具

当然还有几个其他工具,例如

  • 内存dump后的分析工具:MAT

  • 看Java进程的native栈:pstack

  • 日志相关工具:tail,find,fgrep,awk

  • 查看Java堆外的内存消耗:gperf

小结

  • 命令行终端
    • 标准终端类:jps、jinfo、jstat、jstack、jmap
    • 功能整合类:jcmd、vjtools、arthas、greys
  • 可视化界面
    • 简易:JConsole、JVisualvm、HA、GCHisto、GCViewer
    • 进阶:MAT、JProfiler

参考:java问题排查工具单

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览106372 人正在系统学习中

与[转帖]【JVM】JDK命令行工具相似的内容:

[转帖]【JVM】JDK命令行工具

在JDK/bin目录下我发现了许多命令行工具 这些命令有哪些作用呢,接下来我就来详细介绍一下 常用JDK命令行工具 命令名称全称用途jstatJVM Statistics Monitoring Tool用于收集Hotspot虚拟机各方面的运行数据jpsJVM Process Status Tool显

[转帖] JVM诊断命令jcmd介绍

https://www.cnblogs.com/codelogs/p/16535451.html 简介# 从JDK7开始,jdk提供了一个方便扩展的诊断命令jcmd,用来取代之前比较分散的jdk基础命令,如jps、jstack、jmap、jinfo等,并且jdk添加新的诊断功能,也会通过jcmd提供

[转帖] JVM诊断命令jcmd介绍

https://www.cnblogs.com/codelogs/p/16535451.html 简介# 从JDK7开始,jdk提供了一个方便扩展的诊断命令jcmd,用来取代之前比较分散的jdk基础命令,如jps、jstack、jmap、jinfo等,并且jdk添加新的诊断功能,也会通过jcmd提供

[转帖] JVM诊断命令jcmd介绍

https://www.cnblogs.com/codelogs/p/16535451.html 简介# 从JDK7开始,jdk提供了一个方便扩展的诊断命令jcmd,用来取代之前比较分散的jdk基础命令,如jps、jstack、jmap、jinfo等,并且jdk添加新的诊断功能,也会通过jcmd提供

[转帖] JVM诊断命令jcmd介绍

https://www.cnblogs.com/codelogs/p/16535451.html 简介# 从JDK7开始,jdk提供了一个方便扩展的诊断命令jcmd,用来取代之前比较分散的jdk基础命令,如jps、jstack、jmap、jinfo等,并且jdk添加新的诊断功能,也会通过jcmd提供

[转帖] JVM诊断命令jcmd介绍

https://www.cnblogs.com/codelogs/p/16535451.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介# 从JDK7开始,jdk提供了一个方便扩展的诊断命令jcmd,用来取代之前比较分散的jdk基础命令,如jps、jst

[转帖]JVM性能调优监控工具

原文 https://www.cnblogs.com/haiyang1985/p/7654654.html 摘要: JDK自己提供了不少方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本

[转帖]【JVM】G1垃圾收集器的关键技术

前言 G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相信熟悉JVM的同学们都不会对它感到陌生。在JDK 9中,G1被提议设置为默认垃圾收集器(JEP

[转帖]JVM底层原理之标配参数、X和XX参数

一、JVM的参数类型 (1)标配参数(以-开头) java -version java -help java -showversion 在JDK各个版本之间稳定,很少有大的变化。 [标准VM参数表] 参数名称描述默认值-d32使用 32 位数据模型 (如果可用)/-d64使用 64 位数据模型 (如

[转帖]JVM NativeMemoryTracking ;jcmd process_id VM.native_memory;Native memory tracking is not enabled

目录 一、Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能。我们可以利用jcmd(jdk自带)这个工具来访问NMT的数据。 1.Native memory tracking is not enabled 打开NMT 二、查看原生内