【JVM】JVM监视与调试

 

调试命令

jps

显示指定系统内所有的HotSpot虚拟机进程。

命令格式:jps [options] [hostid]

命令参数:(可不写)

[options]:操作格式,

-l 输出主类全名或jar路径

-q 只输出LVMID

-m 输出jvm启动时传递给main()的参数

-v 输出jvm启动时显示指定的JVM参数

 

jstat

监视虚拟机运行时状态信息(类装载、内存、垃圾收集、JIT编译等)。

命令格式:jstat [option] LVMID [interval] [count]

命令参数:

option :操作参数

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

     -compiler 输出JIT编译过的方法数量耗时等

     -gc 垃圾回收堆的行为统计

     -gccapacity 在gc的基础上输出java堆各区域使用到的最大、最小空间

     -gcutil 在gc的基础上输出已使用空间占总空间的百分比

     -gccause 同gcutil,附加最近俩次垃圾回收事件的原因

     -gcnew 统计新生代的行为,其中TT和MTT可以获取对象存活的年龄和最大年龄

     -gcnewcapacity 新生代与其相应的内存空间的统计

     -gcold 统计老年代的行为

     -gcoldcapacity 统计老年代的大小和空间

     -gcpermcapacity 统计永生代的行为

     -printcompliation 输出Hotspot编译方式统计

LVMID :本地虚拟机进程ID

interval :连续输出的时间间隔

count : 连续输出的次数

 

jstat -gc 列名含义

     S0C:From Survivor 区的大小

     S1C:To Survivor 区的大小

     S0U:From Survivor 区当前使用的内存大小

     S1U:To Survivor 区当前使用的内存大小

     EC:Eden 区的大小

     EU:Eden 区当前使用的内存大小

     OC:老年代的大小

     OU:老年代当前使用的内存大小

     MC:方法区(永久代,元数据区)的大小

     MU:方法区(永久代,元数据区)当前使用大小

     YGC:系统运行至此Young GC 的次数

     YGCT:Young GC 的耗时

     FGC:系统运行至此Full GC 的次数

     FGCT:Full GC 的耗时

     GCT:所有GC的总耗时

 

jmap

生成heap dump 文件、查询finalize执行队列、查询java堆和永生代的详细信息。

命令格式:jmap [option] LVMID

命令参数:

option:操作参数

     -dump 生成堆转储快照

     -finalizeinfo 显示 F-Queue队列等待Finalizer线程执行Finalizer方法的对象

     -heap 显示java堆详细信息

     -histo 显示堆中对象的统计信息

     -permstat 打印java堆内存的永久保存区域的类加载器的智能统计信息

     -F 当-dump无响应时,强制生成dump快照

常用命令:

     jmap -dump:live,format=b,file=dump.hprof PID

 

jhat

与Jamp搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可在浏览器中查看。

命令格式:jhat [option] [dumpfile]

命令参数:

option:操作参数

     -stack false|true 关闭|打开对象分配调用栈跟踪

     -refs false|true 关闭|开启对象引用跟踪

     -port port-number 设置jhat HTTP Server 的端口号,默认是7000

     -exclude exclude-file 执行对象查询时需要排除的数据成员列表文件

     -baseline exclude-file 指定一个基准堆转储

     -debug int 设置debug 级别

     -version 启动后只显示版本信息就退出

     -J<flag> 传入启动参数,比如 -J-Xmx512m

dumpfile:dump文件

常用命令:

jhat dump.hprof -port 7000

 

jstack

用于生成java虚拟机当前时刻的线程快照。

命令格式:jstack [option] LVMID

命令参数:

option:操作参数

     -F:当正常输出请求不被响应式,强制输出线程堆栈

     -l:出堆栈外,显示关于锁的附加信息

     -m:如果调用本地方法,可以显示C/C++的堆栈

LVMID:本地虚拟机进程ID

 

jinfo

实时查看和调整虚拟机运行参数。

命令格式:jinfo [option] [args] LVMID

命令参数:

option:操作参数

     -flag:输出指定args参数

     -flags:不需要args参数,输出所有的JVM参数的值

     -sysprops 输出系统属性

     args:JVM参数

LVMID:虚拟机进程ID

 

调试工具

 

JDK自带工具

jconsole

是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控,是一个基于JMX (java management extensions) 的GUI性能检测工具。jconsole使用jvm的扩展机制获取并展示虚拟机中运行的用用程序的性能和资源消耗等信息。

位置:jdk/bin下面jconsole.exe

VisualVM

VisualVM是一个工具,它提供了一个可视界面,用于查看java虚拟机上运行的基于java技术的应用程序的详细信息。

位置:jdk/bin下面jvisualvm.exe

 

第三方工具

MAT

MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的java heap 分析工具,它可以帮助查找内存泄漏和减少内存消耗。

 

GChisto

GChisto是一款专业分析gc日志的工具,可以通过gc日志来分析:Minor GC、Full GC 的时间频率等等,通说列表、报表、图表等不同的形式来反应GC的情况。

 

gcviewer

gcviewer也是一款分析的小工具,用于可视化查看由 Sun/Oracle ,IBM,HP和EBA java虚拟机产生的垃圾收集器的日志。

 

GC Easy

这是一个web工具,在线使用非常方便。

地址:http://gceasy.io。

 

线上监控

监控系统:Zabbix、OpenFalcon、Ganglia。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值