Java虚拟机性能监控及应用故障处理工具笔记

一、jps

jps主要用于获取Java虚拟机的进程号,可配合以下参数使用:
-l:输出main函数所在的主类全名,如果执行的是jar包,则输出jar包的路径;
-m:输出jvm进程启动时传递给主类main函数的参数;
-v:输出jvm进程启动时所传的配置参数;

二、jinfo

  1. 查看虚拟机启动时的配置参数,与jps -v相比,可以看到更多内容:例如通过参数-sysprops看到System.getProperties()可以获取到的JVM属性参数,或者未被显式指定的jvm参数系统默认值。
  2. 在运行时修改jvm参数,格式如下:-flag name=value
  3. jvm启动过程中jar包加载情况等,详见博客JVM进程jar包加载分析

三、jstat

主要统计或监控jvm运行状态信息,例如类装载、jvm内存结构占用、jvm垃圾收集等信息,可配合以下参数使用:
-class:统计类装载及卸载数量、空间使用量、耗时等;
-gcutil:监视Java堆使用占比,例如Eden区、两个Survivor区、老年代、永久代的使用占比,以及相应堆区间垃圾收集次数及占用时间。
-gccause:与-gcutil一样,但是会输出上一次垃圾回收的原因。
-gc:监控内容基本和-gcutil参数类似,不过这里不是占比而是使用量大小
-gccapacity:查看新生代、老年代、永久代的存储容量;
-gcnew:查看新生代垃圾收集情况;
-gcnewcapacity:用来查看新生代存储容量情况;
同新生代对应,查看老年代以及永久代使用情况也有相应的参数-gcold-gcoldcapacity-gcpermcapacity

四、jstack

主要用于查看线程运行时的方法调用堆栈信息,可以快速定位线程出现长时间停顿的原因,例如线程间死锁、死循环、请求外部资源、信号量没有释放、执行耗时的操作等。该命令可配合如下参数使用:
-F:当线程没有响应时,强制输出线程堆栈
-l:除堆栈外,显示关于锁的附加信息;
-m:如果调用到本地方法的话,可以显示C/C++的堆栈;

五、jmap

主要用于:

1. 生成对的转储快照:

-dump:生成Java堆转储快照;
-F:当虚拟机进程对-dump选项没有响应时,强制生成dump快照;

通过虚拟机参数-XX:+HeapDumpOnOutOfMemoryError参数,可以让虚拟机在OOM异常出现时自动生成dump文件;或者通过虚拟机参数-HeapDumpOnCtrlBreak,使用Ctrl+Break键让虚拟机生成dump文件。

转储快照示例:

jmap -F -dump:format=b,file=/your_path/heap.bin 19220
2. 查看堆的概要信息

查看诸如GC使用的哪种垃圾收集器、堆空间的使用情况、JVM参数指定的各个内存空间的大小等,可配合如下参数:
-heap:显示堆详细信息,如使用哪种回收器、参数配置、分代状况等。
-histo:显示堆中对象统计信息,包括类、实例数量、合计容量等;
-finalizerinfo:显示在F-Queue中等待Finalizer线程执行finalize方法的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值