监控jvm的工具
常用的几个命令行工具有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 -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
其中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
-end-
阿铭linux|每日干货
往期文章回顾
而立之年他选择了转型
这个成功男人的女人不简单
直播课 | 戏说运维何去何从
MySQL延迟主从复制
- 大爷在街边卖这种小吃, 制作工具很传统, 也很美味 家乡的美食
- 别买电动车了!这或许就是未来2年的交通工具,太震撼了,大开眼
- 春运故事:汉十高速监控员张瑶在岗位上过了10个除夕
- 投资人应该如何利用好复利这一工具
- 五金新手:这些液压工具你知道么
- 未来人类通过第九维空间来到现在, 飞碟是他们的交通工具
- 漳州大妈古城不文明行为被监控记录
- 吃濑尿虾不伤手的方法, 只要这一个工具就可以
- 7岁男孩眼睛再也看不到了,医生看完监控,宝妈抱头痛哭!
- 濮阳市公安局“满天星”监控中心帮群众追回十万元现金!