JDK自带的JVM工具


 

虚拟机工具可以分析jvm运行时数据、定位jvm存在的问题。这些工具在jdk的bin目录下,前面的均只作为了解,实际只使用最后2个。
 

jdk自带的jvm工具

jps 查看jvm进程、jvm参数
#查看正在执行的虚拟机进程,和ps -ef|grep java相似,也可以使用ps -ef | grep xxx代替
#会输出pid,主类显示全限定类名,如果执行的是jar则显示jar的路径
jps -l 

#查看jvm参数
jps -v  

 

jstat 查看jvm的运行状态
#pid、间隔多少ms输出1次、输出次数。缺省输出次数时,默认一直输出
jstat -gc 16340 1000 10

在这里插入图片描述

  • S0C、S1C:第一个、第二个Survivor区的容量(from、to),S是Survivor、C是Capacity
  • S0U、S1U:第一个、第二个Survivor区已使用的容量,U是used
  • EC、 EU:Eden区的容量、已用容量
  • OC、OU:老年代的容量、已用容量,O是old
  • MC、MU:方法区的
  • CCSC、CCSU:压缩的类空间的
  • YGC、YGCT:新生代垃圾回收次数、消耗时间,Y是young,GC就是gc,T是time
  • FGC、FGCT:老年代的,FGC是Full GC 老年代GC
  • GCT:垃圾回收消耗总时间

 

jinfo 查看jvm参数
#查看指定进程(pid)的信息,包括操作系统的信息、环境变量、jvm参数等
jinfo 16340

#查看指定进程的全部jvm参数
jinfo -flags 16340

#查看指定进程的指定jvm参数,也可以通过grep过滤得到
jinfo -flag MaxHeapSize 16340

 

jstack 查看线程快照

线程快照可以定位线程出现长时间停顿的原因,比如线程间死锁、死循环、等待获取锁等

#查看线程快照,包括线程名、线程状态、执行到那个类的哪一行代码、持有的锁
jstack -l 28584  #pid

#检查线程死锁
jstack -m 28584  #pid

eg. 线程死锁时的线程快照:
在这里插入图片描述
会列出发生死锁的线程,死锁原因、代码位置

 

jmap 查看堆的使用情况、生成堆快照
#查看堆的使用情况,包括最大|小堆内存、各年代的使用情况
jmap -heap 28180 

# 查看所有的类的实例,包括类名、实例个数、每个实例的大小
# 部分类名会简写,比如B=>byte,C=>char,I=>int
jmap -histo 28180
# 信息很多,可以使用管道命令分页查看
jmap -histo 28180 | more

# 生成堆快照文件。windows路径用\,linux用/
jmap -dump:format=b,file=D:\heap_dump.hprof  28180  #pid
jmap -dump:format=b,file=/usr/local/heap_dump.hprof 28180
#jvm参数,发生OOM异常时自动生成dump文件,可用于复盘、定位问题
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\mall\

 

jhat 分析堆快照
#默认使用端口7000,访问localhost:7000即可查看堆快照的分析信息
jhat xxx.hprof

#可以-p指定使用的端口
jhat -p 9000 xxx.hprof

 

jconsole jvm状态可视化查看工具

可以查看本地、远程的jvm运行状态,信息多样

jconsole

#如果检测不到本地jvm进程时,可以手动指定jvm进程的pid
jconsole 17412

 

jvisualvm 更加强大的jvm状态可视化查看工具
#指定jvm进程的pid
jvisualvm --openpid 17412

#如果提示不能打开指定进程,删除hsperfdata_xxx文件夹后重试,xxx换为自己的用户名
#C:\Users\xxx\AppData\Local\Temp\hsperfdata_xxx   

IDEA可安装插件 VisualVM Launcher,设置VisualVM execuatble的路径为jdk bin目录下的jvisualvm.exe,这样就可以直接在IDEA中使用jvisualvm。

 

内存泄漏

  • 堆内存泄漏,常见现象:heap使用量明显上升、经常达到最大堆内存,出现OOM或频繁Full GC。解决方案:dump分析堆快照
  • 堆外内存泄漏:heap使用量很低、无明显变化,但出现OOM会频繁Full GC。解决方案:VisualVM -> 工具 -> 插件 -> 可用插件 -> 安装Btrace 进行分析
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值