源自笔者某次回去等通知的故事
列出正在运行的虚拟机进程、及其pid,命令参数有:
-l:输出主类全限定类名
-v:虚拟机进程启动时的JVM参数
jps -l
监视虚拟机各种运行状态,命令参数有:
-gc:监视堆状况
-gcutil:与-gc一致,不同于显示百分比
jstat -gcutil pid 时间间隔 查询次数
jstat -gcutil 11564 250 20
Surviro from Eden Old MeteSpace CSS YGC总次数 YGC总花费时间 FGC总次数 FGC总时间 GCT垃圾回收总时间
实时产看和调整虚拟机各项参数,参数有:
-flag [ +-name / name=value ] 来运行时修改参数
jinfo pid
jinfo 11564
生成堆转储快照(headdump),或者 设置参数 -XX:+HeadDumpOnOutOfMemoryError参数,溢出时自动生成快照文件,文件中可以获取到:
其参数有:
-dump:生成Java堆转储文件,然后用VisualVM来打开
jmap -dump:format=b,file=filename pid
jmap -dump:format=b,file=C:\Users\Howl\Desktop\2020-6-3-heapdump.hprof 11564
-histo:查看堆中对象详细信息,包括类,实例数量,合计容量
jmap -histo pid
jmap -histo 11564
生成当前线程存储快照(Threaddump),常用于定于线程长时间停顿
查看各种堆、方法区、线程等信息
内存标签页:相当于jstat命令,可以查看堆和方法区的情况
线程标签页:相当于jstack命令,可以查看各线程停顿情况,可以检测死锁
类标签页:查看总加载类数目以及当前加载的类的数量
VM概要标签页:各种JVM参数
功能最强大的运行监控和故障处理程序之一,在JConsole的基础上可以生成查看dump文件,还有更多可安装插件的功能
可以生成dump,查看实例占用空间大小
问题一般是大量对象涌入撑满导致
无非就是内存泄漏,年轻代大量涌入无法清除,进入老年代也无法清除
原文:https://www.cnblogs.com/Howlet/p/13042033.html