常用的几个命令行工具有jps、jstat、jinfo、jmap、jstack等。这几个工具可以通过安装openjdk-devel-debug包获取。
yum install -y java-1.8.0-openjdk-devel-debug
1. jps 类似linux的ps命令,常用选项有
-l 输出应用程序main class的完整package名或者应用程序的jar文件完整路径名
-m 输出传递给main 方法的参数,在嵌入式jvm上可能是null
-v 输出传递给JVM的参数
示例:
jps -lvm
2. jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,用以判断JVM是否存在内存问题。
语法: jstat -
其中vmid指的是java进程pid,interval为间隔时间,单位是毫秒,count为次数。
常用用法:
jstat -gcutil 20659 1000 2
输出内容为:
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 99.38 65.57 3.61 97.37 89.84 1 0.015 0 0.000 0.015
0.00 99.38 65.57 3.61 97.37 89.84 1 0.015 0 0.000 0.015
S0 — Heap上的 Survivor space 0 区已使用空间的百分比
S1 — Heap上的 Survivor space 1 区已使用空间的百分比
E — Heap上的 Eden space 区已使用空间的百分比
O — Heap上的 Old space 区已使用空间的百分比
P — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到采样时发生 Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
3. jinfo用来查看jvm配置参数。
常用用法:
jinfo -flags 20659 //其中后面的数字是java进程pid
输出内容如下:
Attaching to process ID 20659, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.161-b14
Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=67108864 -XX:MaxHeapSize=1069547520 -XX:MaxNewSize=356515840 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=22020096 -XX:OldSize=45088768 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
Command line: -Dcatalina.base=/usr/share/tomcat -Dcatalina.home=/usr/share/tomcat -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat/temp -Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
4. jmap用来查看指定java进程内存使用情况。
常用用法:
jmap pid #打印内存使用的摘要信息
jmap –heap pid #java heap信息
jmap -histo:live pid #统计对象count ,live表示在使用
jmap -histo pid >mem.txt #打印比较简单的各个有多少个对象占了多少内存的信息,一般重定向到一个文件
jmap -dump:format=b,file=mem.dat pid #将内存使用的详细情况输出到mem.dat 文件
5 jstack用于查看进程内线程栈的工具。当程序出现死锁时,我们可以通过jstack打印线程栈找到问题。
用法是:
jstack pid
全部0条评论
快来发表一下你的评论吧 !