1 jdk 自带工具之 jstat——虚拟机过程情况工具
应用形式
Usage: jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
例子 1: 查看 gc 信息,每 250 秒查问一次,总共查问 20 次
jstat -gc pid 250 20
例子 2:
其中 pid 能够通过 jdk 自带工具 jps(间接在命令行执行 jps 命令即可)进行查看
jstat -gcutil 70159
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 87.77 40.26 96.34 94.45 25 0.432 4 0.531 0.963
S0:代表 S0 区域应用占比 0%
S1:代表 S1 区域应用占比 0%
E: 代表 eden 区域应用比例为 87.77%
O:代表老年代区域应用占比 40.26%
YGC:young GC 产生 25 次
YGCT:年老代 GC 总耗时 0.432 秒
FGC:老年代 GC 总共产生 4 次
FGCT:老年代 GC 公共耗时 0.531 秒
GCT:GC 总共耗时 0.963 秒
2 jdk 自带工具之 jinfo——Java 配置信息工具
应用形式
Usage:
jinfo [option] <pid>
(to connect to running process)
jinfo [option] <executable <core>
(to connect to a core file)
jinfo [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
where <option> is one of:
-flag <name> to print the value of the named VM flag
-flag [+|-]<name> to enable or disable the named VM flag
-flag <name>=<value> to set the named VM flag to the given value
-flags to print VM flags
-sysprops to print Java system properties
<no option> to print both of the above
-h | -help to print this help message
例子:查看指定 VM 参数值,这里是 CMS 垃圾回收器,占用多少内存会触发整顿操作
jinfo -flag CMSInitiatingOccupancyFraction 70159
例子 2: 查看 VM 所有参数
jinfo -flags 70159
3 jdk 自带工具之 jmap——Java 内存映像工具
用来生成堆转储快照(个别称为 heapdump 或 dump 文件)。如果不实用 jmap 命令,
其余比拟暴力的形式:
1、(-XX:+HeapDumpOnOutOfMemoryError)
2、-XX:HeapDumpOnCtrlBreak 能够应用 ctrl + break 命令让虚拟机生成 dump 文件
3、在 Linux 零碎,能够通过 kill -3 命令发送过程退出新号“吓唬”以下虚拟机,也能获取到 dump 文件。
应用形式:
Usage:
jmap [option] <pid>
(to connect to running process)
jmap [option] <executable <core>
(to connect to a core file)
jmap [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
where <option> is one of:
<none> to print same info as Solaris pmap
-heap to print java heap summary
-histo[:live] to print histogram of java object heap; if the "live"
suboption is specified, only count live objects
-clstats to print class loader statistics
-finalizerinfo to print information on objects awaiting finalization
-dump:<dump-options> to dump java heap in hprof binary format
dump-options:
live dump only live objects; if not specified,
all objects in the heap are dumped.
format=b binary format
file=<file> dump heap to <file>
Example: jmap -dump:live,format=b,file=heap.bin <pid>
-F force. Use with -dump:<dump-options> <pid> or -histo
to force a heap dump or histogram when <pid> does not
respond. The "live" suboption is not supported
in this mode.
-h | -help to print this help message
-J<flag> to pass <flag> directly to the runtime system
例子:生成 dump 文件
jmap -dump:format=b,file=eclipse.bin 2500
4 jhat:虚拟机堆转储快照剖析工具
个别不必,一个是因为:个别不会在部署应用程序的服务器上间接剖析 dump,因为剖析 demp 文件是一个耗时而且耗费硬件资源的操作;二是因为 jhat 的剖析性能相对来说比拟简陋。个别能够应用 Eclipse Memory Analyzer 或者 IBM HeapAnalyzer 等工具。
如果须要应用,能够参照博客:mac 平台下怎么剖析 java 堆 hprof 文件 https://blog.csdn.net/Prepare…
5 jstack:Java 堆栈跟踪工具
次要是用来生成线程快照,用于剖析定位线程呈现长时间进展的起因,如线程间死锁、死循环、申请内部资源导致的长时间期待。
Usage:
jstack [-l] <pid>
(to connect to running process)
jstack -F [-m] [-l] <pid>
(to connect to a hung process)
jstack [-m] [-l] <executable> <core>
(to connect to a core file)
jstack [-m] [-l] [server_id@]<remote server IP or hostname>
(to connect to a remote debug server)
Options:
-F 当失常输入的申请不被响应时,强制输入线程堆栈
-m 如果调用到本地办法的话,能够显示 C /C++ 的堆栈
-l 除堆栈外,显示对于锁的附加信息
-h or -help to print this help message
jdk1.5 之后,Thread 类提供了 getAllStackTraces() 能够获取虚拟机中所有线程的 StackTraceElement 对象,能够实现大部分 jstack 性能,能够用这个做一个界面。
6 JConsole: Java 监督与治理控制台
mac 零碎,间接在控制台执行命令:jconsole
启动相应的界面
抉择要监控的过程
查看对应过程的堆、新生代、老年代内存状况
7 VisualVM: 多合一故障解决工具
mac 零碎,间接在控制台执行命令:jvisualvm
启动相应的界面
长处:
- 到目前为止随 JDK 公布的性能最弱小的运行监控和故障处理程序;
- 除了运行监控、故障解决,还提供性能剖析等能力;
- 对应用程序的理论性能的影响很小,能够间接在生产环境中应用。
性能范畴:
- 显示虚拟机过程以及过程的配置、环境信息(jps、jinfo);
- 监督应用程序的 CPU、GC、堆、办法区以及线程信息(jstack、jstat);
- dump 以及剖析堆转储快照(jmap、jhat);
- 办法及的程序运行性能剖析,找出调用最多、运行工夫最长的办法;
- 离线程序快照:收集程序的运行时配置、线程 dump、内存 dump 等信息建设快照,可将快照发给开发进行 Bug 反馈;
装置相应的插件,更好的应用该工具。
如果本文对你有帮忙,欢送关注我的公众号 哥妞,带你深刻 JAVA 的世界~