优秀的编程知识分享平台

网站首页 > 技术文章 正文

JAVA应用诊断命令工具(java故障排查)

nanyue 2024-07-30 03:38:24 技术文章 9 ℃

jps:

列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称

jps -q : 只显示LVMID

jps -m : 显示传递给main()函数的参数

jps -l : 显示虚拟机执行主类(Main Class,main()函数所在的类)全路径名称

jps -v : 显示虚拟机启动的显式指定参数

jps options hostid

jps还可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,参数hostid为RMI注册表中注册的主机名

jstat:

虚拟机统计信息监视工具,查看堆内存各部分的使用量,以及加载类的数量,以及垃圾回收情况

jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]

jstat -class vmid:类加载统计

jstat -gc vmid:垃圾回收统计

jstat -gcnew vmid:新生代垃圾回收统计

jstat -gcold vmid:老生代垃圾回收统计

jstat -gccapacity vmid:堆内存统计

jstat -gcnewcapacity vmid:新生代内存统计

jstat -gcoldcapacity vmid:老生代内存统计

jstat -gcmetacapacity vmid:元空间内存统计

jstat -gcutil vmid:总结垃圾回收统计

jstat -gcutil 18883@10.202.37.75:1099 1000 1000

查看远程虚拟机

jinfo:

Java配置信息工具,查看和调整虚拟机各项参数

jinfo -flag CMSInitiatingOccupancyFraction vmid: 查看CMSInitiatingOccupancyFraction参数值

jinfo -sysprops vmid: 查看System.getProperties()的内容


jmap:

Java内存映像工具,生成堆转储快照,查询finalize执行队列、Java堆和方法区的详细信息,如空间使用率、当前用的收集器

生成堆转储(heapdump或dump文件)方法:

-XX:+HeapDumpOnOutOfMemoryError:虚拟机在内存溢出异常出现之后自动生成堆转储快照文件

-XX:+HeapDumpOnCtrlBreak: 用[Ctrl]+[Break]键让虚拟机生成堆转储快照文件

jmap -dump:live,format=b,file=myjmapfile.txt vmid:

使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件

jmap -finalizerinfo vmid:

打印正等候回收的对象的信息

jmap -heap vmid:

打印heap的概要信息,GC使用的算法,heap(堆)的配置及JVM堆内存的使用情况

jmap -histo:live vmid:

打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.


jhat:

虚拟机堆转储快照分析工具,分析jmap生成的堆转储快照(加载dump文件极耗费硬件资源)

jhat dumpFile:解析后在浏览器中打开

内存泄漏问题主要会使用到其中的“Heap Histogram”(与jmap-histo功能一样)与OQL页签的功能

Heap Histogram:找到内存中总容量最大的对象

OQL页签 :标准的对象查询语言,对内存中的对象进行查询统计


jstack:

Java线程堆栈跟踪工具,线程间死锁、死循环、请求外部资源导致的长时间挂起

jstack -l vmid: 附加显示锁信息

最近发表
标签列表