浅析jvm基础工具

jps命令

  • jvm process status tool, 虚拟机进程状况工具
  • 可以列出正在运行的虚拟机进程, 并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一id
  • 用法
  1. jps -l 显示主类名称. windows下有些进程的主类为什么不显示?
    在这里插入图片描述
    在这里插入图片描述
  2. jps -m 显示main函数参数
    在这里插入图片描述
  3. jps -v 显示虚拟机进程启动时的jvm参数, 每启动一个项目都会有一个虚拟机进程
    在这里插入图片描述

jstat命令

  • jvm statistics monitoring tool, 虚拟机统计信息监视工具
  • 显示进程的类加载, 内存, 垃圾收集, 即时编译等运行时数据
  • 用法
  1. 监视java堆状况
// 输出1秒内的信息, 输出两次
jstat -gc 103097 1000 2
S0C列, 第一幸存区的总大小, 单位是kb
S0U列, 第一幸存区已使用的大小
OC列, 老年代的总大大小
MC列, 永久代的总大小
CCSC列, 压缩类空间的总大小
YGC列, 年轻代垃圾回收次数
YGCT列, 年轻代垃圾回收总时间, 单位是秒
GCT列, 垃圾回收总时间

在这里插入图片描述
2. 堆内存统计, 输出主要关注java堆各个区域使用到的最大, 最小空间

jstat -gccapacity 103097 1000 2 
NGCMN列, 年轻代最小容量
NGCMX列, 年轻代最大容量
NGC列, 年轻代当前容量

在这里插入图片描述
3. 总结垃圾回收统计, 输出主要关注已使用空间占总空间的百分比

jstat -gcutil 103097 1000 2
S0列, 第一幸存区当前使用的比例
YGC列, 年轻代垃圾回收次数
YGCT列, 年轻代垃圾回收总时间, 单位是秒

在这里插入图片描述
4. 输出导致上一次垃圾收集产生的原因

jstat -gccause 103097 1000 2
LGCC列, 最近一次垃圾收集的原因
GCC列, 当前垃圾收集的原因

在这里插入图片描述
5. 新生代垃圾回收统计

jstat -gcnew 103097 1000 2
TT列, 对象在新生代的存活次数
MTT列, 对象在新生代的最大存活次数
DSS列, 期望的幸存区大小

在这里插入图片描述
6. 新生代内存统计
在这里插入图片描述
7. 元空间内存统计

jstat -gcmetacapacity 103097 1000 2

在这里插入图片描述
8. 输出即时编译器编译过的方法, 耗时等信息

jstat -compiler 103097 1000 2
Compiled列, 编译成功数
Invalid列, 无效数量
FailedType列, 最后一次编译失败类型
FailedMethod列, 最后一次编译失败的方法

在这里插入图片描述
9. 输出已经被即时编译的方法

jstat -printcompilation 103097 1000 2
Compiled列, 最近编译方法的数量
Size列, 最近编译方法的字节码数量
Type列, 最近编译方法的编译类型
Method列, 方法名标识

在这里插入图片描述
9. 类加载统计, 监视类加载, 卸载数量, 总空间以及类装载所耗费的时间

jstat -class 103097

在这里插入图片描述

jinfo命令

  • java配置信息工具
  • 实时查看和调整虚拟机各项参数
  • 用法
  1. 查询未被显式指定的参数的系统默认值
jinfo -flag CMSInitiatingOccupancyFraction 103097

在这里插入图片描述
2. 输出虚拟机进程的System.getProperties()的内容

jinfo -sysprops 103097

在这里插入图片描述
在这里插入图片描述

  1. 调整虚拟机参数
jinfo -flag user.dir=/usr 103097

在这里插入图片描述

jmap命令

  • java内存映像工具
  • 用于生成堆转储快照, 还可以查询finalize队列,java堆和方法区的详细信息如空间使用率, 当前用的哪种收集器
  • 用法
  1. 生成java堆转储快照
jmap -dump:format=b,file=netty-demo.bin 103097

在这里插入图片描述
2. 显示在F-Queue中等待Finalizer线程执行finalize方法的对象

jmap -finalizerinfo 103097

在这里插入图片描述
3. 显示java堆详细信息, 如使用哪种回收器, 参数配置, 分代状况等.

jmap -heap 103097

在这里插入图片描述
4. 显示堆中对象统计信息, 包含类, 实例数量, 合计容量

jmap -histo 103097

在这里插入图片描述
5. 以classloader为统计口径显示永久代内存状态

jmap -clstats 103097

在这里插入图片描述

jhat命令

  • 虚拟机堆转储快照分析工具
  • 类似工具
    visual vm
    eclipse memory analyzer
    ibm heap analyzer
  • 用法
// 分析结果默认以包为单位进行分组显示,分析内存泄漏问题主要会使用到其中的“Heap Histogram”(与jmap-histo功能一样)与OQL页签的功能,前者可以找到内存中总容量最大的对象,后者是标准的对象查询语言,使用类似SQL的语法对内存中的对象进行查询统计。
jhat netty-demo.bin

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jstack命令

  • java堆栈跟踪工具
  • 用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者 javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间挂起等,都是导致线程长时间停顿的常见原因。线程出现停顿时通过jstack来查看各个线程的调用堆栈, 就可以获知没有响应的线程到底在后台做些什么事情,或者等待着什么资源。
  • 用法
// -l参数, 用于输出除堆栈外关于锁的附加信息
// 从JDK 5起,java.lang.Thread类新增了一个getAllStackTraces()方法用于获取虚拟机中所有线程的StackTraceElement对象。
jstack -l 103097

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值