JVM系列之jdk工具详解毕生所学

在jdk的bin目录下有跟多的  *.exe命令行工具,这些工具非常强大可以监控虚拟机和故障处理。

工具名称作用描述
jpsJVM进程状态工具(JVM Process Status Tool)用于显示目标系统上JVM的java进程
jstatJVM统计监测工具(JVM Statistics Monitoring Tool)主要用于监测显示JVM的性能统计信息
jinfojava配置信息工具(JAVA Configuration Information)用于打印指定java进程核心文件或者远程调用服务的配置信息
jhatjava堆分析工具(JAVA Heap Analysis Tool)用于分析java堆内存中的对象信息
jmapjava内存映射工具(JAVA Memory Map)主要用于打印java进程,核心文件或者远程调用服务器的共享对象内存映射或者堆内存细节
jstackjava堆栈跟踪工具,主要用于打印指定java进程,核心文件或者远程调用服务器的java线程的堆栈跟踪信息
jmcjava任务控制工具(JAVAMission Control) 主要用于JVM的生产时间监测,分析诊断
jvisualvmjvm 监测,故障排除,分析工具,主要以图形化界面的方式提供运行与指定虚拟机的java应用程序的详细信息
jconsole图形化用户界面监测工具,主要用于监测并显示运行与java平台上的应用程序的性能和资源占用等信息

1.1 jps 虚拟机进程状况工具

功能:显示正在运行的虚拟机进程

参数:-mlvV

1.2 jinfo

功能:显示jvm运行的参数

参数:

1.2 jstat 运行状态信息

功能:显示本地或远程虚拟机进程中的类装载,内存,垃圾收集,JIT编译等运行数据,是定位虚拟机性能问题的首选工具;定位死锁

用法: jstat [-命令选项] [vmid] [间隔时间-毫秒] [查询次数]

命令选项描述
-class 监视类装载、卸载数量、总空间以及耗费的时间
-compiler输出JIT编译过的方法数量耗时等
-gc垃圾回收堆的行为统计,常用命令
-gccapacity同-gc,还会输出Java堆各区域使用到的最大、最小空间
-gcutil同-gc,输出的是已使用空间占总空间的百分比
-gccause垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因
-gcnew统计新生代行为
-gcnewcapacity新生代与其相应的内存空间的统计
-gcold统计老年代行为
-gcoldcapacity老年代与其相应的内存空间的统计
-gcpermcapacity永久代与其相应内存空间的统计
-printcompilationhotspot编译方法统计

jdk1.7 使用 -gc打印的结果:

jstat.exe -gc 12488 1000 10

S0C

survivor0区的总容量

MU

方法区使用大小(JDK1.8)

S1C

survivor1区的总容量

CCSC

压缩类空间大小

S0U

survivor0区已使用的容量

CCSU

压缩类空间使用大小

S1C

survivor1区已使用的容量

PC

当前perm的容量 (KB)(JDK1.7)

EC

Eden区的总容量

PU 

perm的使用 (KB)(JDK1.7)

EU

Eden区已使用的容量

YGC

新生代垃圾回收次数

OC

Old区的总容量

YGCT

新生代垃圾回收时间

OU

Old区已使用的容量

FGC

老年代垃圾回收次数

MC法区大小(JDK1.8)

FGCT

老年代垃圾回收时间

  

GCT

垃圾回收总消耗时间

jdk1.8把PC PU 永久代换为了meteSpace 元空间


jstat.exe -gcnew 12488 1000 10
S0C    S1C    S0U    S1U  TTMTT  DSS      EC      EUYGC    YGCT

第一个幸存区大小

第二个幸存区的大小第一个幸存区的使用大小第二个幸存区的使用大小对象在新生代存活的次数Tenuring threshold(提升阈值)对象在新生代存活的最大次数,最大的tenuring threshold期望的幸存区大小,survivor区域大小 (KB)伊甸园区的大小伊甸园区的使用大小年轻代垃圾回收次数年轻代垃圾回收消耗时间

1.2 jmap 内存dump信息

分析堆

功能:用于生成heap dump 文件,如果不使用这个命令 还可以使用 -XX:HeapDumpOnOutMemoryError参数来让虚拟机出现OOM的时候自动生成dump文件,jmap不仅能生成dump文件,还可以查询finalize执行队列,java堆,和永久代的详细信息,如当前使用率,当前使用的那种收集器

用法:jmap [-命令选项] [vmid]

Memory Analyzer Tool = MAT (分析hprof)http://www.eclipse.org/mat/downloads.php

  • Attach Listener:负责接收外部命令
  • Single Dispactcher:接收命令收分发给不同的模块
  • Finalizer:执行用户finalizer方法的线程
  • Reference Handler:处理对象引用(软引用/弱引用/虚引用)

1.3 jstack 堆栈跟踪工具

功能:用于生成虚拟机当前时刻的线程快照,以便可以进一步定位线程出现长时间停顿的原因。如线程死锁,死循环,请求外部资源长时间等待等

用法: jstack [-命令选项] [vmid]

cpu满了,死循环堆cpu消耗很高

1.4 jvisualvm  jconsole工具

升级版

由于 jconsole jvisualvm 相对来说很繁琐,甚至官方操作手册都长达几十页;后续想好会补充

jvisualvm插件地址:https://visualvm.github.io/index.html

根据自己的JDK版本下载相应版本的插件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值