jps:列出java进程,类似于ps命令
- -q:指定jps只输出进程ID ,不输出类的短名称
- -m:可以用于输出传递给Java进程(主函数)的参数
- -l:可以用于输出主函数的完整路径
- -v:可以显示传递给JVM的参数
jinfo:查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数
- -flag <name>:打印指定JVM的参数值
- -flag [+|-]<name>:设置指定JVM参数的布尔值
- -flag <name>=<value>:设置指定JVM参数的值
jmap:生成Java应用程序的堆快照和对象的统计信息
- jmap -histo 3256 >/d/heap_statistics.txt
-
-
num #instances #bytes class name----------------------------------------------1: 380169 33768080 [C2: 59220 18384344 [I3: 53850 11702368 [B4: 314593 7550232 java.lang.String5: 88442 6106848 [Ljava.lang.Object;6: 152528 6101120 sun.java2d.pipe.Region7: 167642 5364544 java.awt.Rectangle8: 44713 4900648 java.lang.Class9: 133110 4259520 com.intellij.openapi.vfs.newvfs.impl.VirtualFileImpl10: 129475 4143200 java.util.AbstractList$Itr......20954: 1 16 sun.util.locale.provider.SPILocaleProviderAdapter20955: 1 16 sun.util.locale.provider.TimeZoneNameUtility$TimeZoneNameGetter20956: 1 16 sun.util.resources.LocaleData20957: 1 16 sun.util.resources.LocaleData$LocaleDataResourceBundleControlTotal 3620634 175757120
-
- jmap -dump:format=b,file=c:\heap.hprof 2972:导出堆数据,导出的堆数据使用 Eclipse MAT(memory Analysis Tools)分析
jvm GC log 分析工具:
github 上有在维护
jstack:线程dump
- -l 打印锁信息
- -m 打印java和native的帧信息
- -F 强制dump,当jstack没有响应时使用
- jstack 8384 > /d/jstack
JConsole:图形界面(JDK自带,旧版,被VisualVM替代,需要实时连接到 JVM,不能做离线数据分析)
VisualVM:图形界面(JDK自带,大部分功能需要实时连接到 JVM,功能强大)
heap分析工具:
MAT(memory analysis tools):非常强大,用的很多
VisualVM:JDK自带工具