1、查看正在运行的java进程(jps)
jsp -q //查看本地ip
jps -l//查看完整全类名
jps -v//列出虚拟机进程启动时的参数
2、jstat :查看JVM统计信息
jstat -class 4091

查看类的加载数量、总空间。类装载所需要的时间
jstat -class 4091 1000//没隔一秒打印输出
jstat -class 4091 1000 10 //总共打印10次
jstat -class -t 4091 //打印程序到现在执行的时间
jstat -class -t -h3 4091 1000 10 // -h3 每隔3秒打印一次表头
jstat -compiler 4091//显示JIT编译器编译过的方法和耗时
jstat -printcompilation 4091 //输出被JIT编译器编译的方法
垃圾回收相关:
jstat -gc 4091//显示与GC相关堆的信息。包括Eden区,两个Survior区、老年代、永久代等的容量、已用空间、GC时间合计等信息。

jstat -gcutil 61095 1000 10//gcutil 显示与GC相同 ,但输出的是已使用空间占比总空间

jstat -gccause 63870 1000 30//cause 与gcutil功能一样,但是会额外输出导致最后一次或当前正在发生的GC产生的原因

jstat -gc -t 66417 1000 20
我们可以比较Java 进程的启动时间已经总GC时间,或者两次测量的间隔时间已经总GC时间的增量。来得出GC时间占运行时间的比例
如果该比例超过20%,则说明目前堆的压力较大,如果该比例超过90%,则说明堆里面几乎没有可用空间,随时都可能抛出OOM异常

补充:
1)在jstat命令数据量取几行OU的最小值
2)每隔一段时间重复上述操作。获取多组OU最小值。如果这些值呈上涨趋势。在说明老年代内存已使用量在不断上涨。这意味着无法回收的对象在不断增加。很有可能存在内存泄露

3、jinfo查看虚拟机配置参数信息,也可用于调整虚拟机的配置参数
jinfo -sysprops PId//sysprops 这个关键字部分版本JDK不支持 例如安装mac的电脑
jinfo -flags PID// flags 部分JDK不支持该关键字
jinfo -flag UseParallelGC PID
java -XX:+PrintFlagsFinal -version |grep manageable //查看可以被修改的参数值

java -XX:+PrintFlagsFinal//查看所有JVM参数的最终值
java -XX:+PrintFlagsInitial//查看所有JVM参数启动的初始值
4、jmap 导出内存映像文件&内存使用情况(获取dump文件即堆转储快照文件,属于二进制文件)
手动:
jmap -dump:format=b,file=/Users/chenbiao/Downloads/1.hprof 39887
jmap -dump:live,format=b,file=/Users/chenbiao/Downloads/3.hprof 39887//输出存活的对象
自动:
添加参数:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/chenbiao/Downloads/error.hprof
jmap -histo PID 输出堆中对象的同级信息,包括类、实例数量和合计容量,也是这一时刻的内存中的对象信息
jmap -histo 29211 >/Users/chenbiao/Downloads/b.txt
jmap -heap 32408 查看堆内存分配的情况
jmap -heap 32408
5、jhat :JDK自带堆分析工具
6、jstack 打印线程快照
生产线程快照的作用:可用于定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等问题。当线程出现停顿,就可用jstack显示各个线程调用的堆栈情况
死锁,DeadLock
等待资源,Waiting on condition
等待获取监视器,Waiting on monitor entry
阻塞,Blocked
执行中,Runnable
jstack PID



jstack -l 63622 //显示除堆外,附加锁的信息
7、jcmd:多功能命令行:用来导出堆,内存使用,查看Java进程,导出线程信息,执行GC,JVM运行时间
jcmd PID help//查看ID能够查询的信息


本文详细介绍了Java性能监控和诊断的常用工具,包括jps、jstat、jinfo、jmap、jhat、jstack和jcmd的使用方法,以及如何通过这些工具分析Java进程状态、JVM统计信息、内存映像、线程快照等,以诊断内存泄漏、垃圾回收问题和性能瓶颈。
915

被折叠的 条评论
为什么被折叠?



