JDK性能监控命令
阅读原文
查看虚拟机进程:jps 命令
jps 命令可以列出所有的 Java 进程。如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示。
$ jps
6540 Jps
64447 Main
除此之外,还可以指定下面的参数自定义输出信息:
| 参数 | 含义 |
|---|---|
| -q | 指定jps只输出进程ID |
| -m | 输出传递给Java进程的参数 |
| -l | 输出主函数的完整路径 |
| -v | 显示传递给Java虚拟机的参数 |
虚拟机统计信息:jstat 命令
jstat 用于观察 Java 堆信息的详细情况,其基本使用语法位:
jstat -<option> [-t] [-h<lines>] <vmid> [<interval>] [<count>]]
其中 option 可以由以下值构成。
| 参数 | 含义 |
|---|---|
| -class | 监视类装载、卸载数量、总空间以及类装载所耗费的时间 |
| -gc | 监视Java堆状况,包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息 |
| -gccapacity | 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间 |
| -gcutil | 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 |
| -gccause | 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 |
| -gcnew | 监视新生代GC状况 |
| -gcnewcapacity | 监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间 |
| -gcold | 监视老年代GC状况 |
| -gcoldcapacity | 监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间 |
| -gcpermcapacity | 输出永久代使用到的最大、最小空间 |
| -compiler | 输出JIT编译器编译过的方法、耗时信息 |
| -printcompilation | 输出已经被JIT编译的方法 |
-t 参数表示输出时间戳、-h 参数表示在多少行后输出一个表头、vmid 则是虚拟机的进程ID、interval 和 count 表示输出间隔以及输出次数。
例如:我们用jstat命令来监视一个LVMID为2365的JVM进程。
$ jstat -gcutil 2365
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 12.05 0.00 14.17 0 0.000 0 0.000 0.000
其中每个选项的意义如下:
| 参数 | 含义 |
|---|---|
| S0、S1 | 表示Survivor0、Survivor1,还未使用。 |
| E | 表示Eden区使用了12.05%的空间。 |
| O | 表示老年代还未使用。 |
| P | 表示永久代使用了14.17%的空间 |
| YUC、YGCT | 表示从程序运行以来一共发生了0次Minor GC(YGC,Young GC),总共耗时0秒。 |
| FGC、FGCT | 表示从程序运行以来一共发生了0次Full GC(FGC,Full GC),总共耗时0秒。 |
查看虚拟机参数:jinfo 命令
jinfo 可以用来查看正在运行的 Java 应用程序的扩展参数,甚至支持在运行时,修改部分参数。它的基本语法是:
jinfo <option> <pid>
执行例子,查询 CMSInitiatingOccupancyFraction 参数值
$ jinfo -flag CMSInitiatingOccupancyFraction 2618
-XX:CMSInitiatingOccupancyFraction=-1
导出堆到文件:jmap 命令
jmap 是一个多功能命令,可以生成 Java 程序的 Dump 文件,也可以查看堆内对象实例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。
jmap [option] vmid
执行样例,使用 jmap 生成一个正在运行的 Eclipse 的 dump 快照文件的例子。例子中的2618是通过jps名称查询到的LVMID。
$ jmap -dump:format=b,file=Desktop/dump.bin 2618
Dumping heap to /Users/yurongchan/Desktop/dump.bin ...
Heap dump file created
堆分析工具:jhat 命令
jhat 命令用于分析 Java 应用的对快照内存。Sun JDK 提供了 jhat 命令与 jmap 搭配使用,来分析 jmap 生成的堆转储快照。jhat 内置了一个微型的 HTTP/HTML 服务器,生成 dump 文件的分析结果后,可以在浏览器中查看。下面我们用 jhat 来分析上面生成的 dump.bin 文件:
$ jhat dump.bin
Reading from dump.bin...
Dump file created Sun May 15 23:04:19 CST 2016
Snapshot read, resolving...
Resolving 13822 objects...
Chasing references, expect 2 dots..
Eliminating duplicate references..
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
之后在浏览器输入 http://localhost:7000 就可以看到分析结果,如下图所示:

不过一般情况下不用 jhat 命令来分析 dump 文件,主要有以下两个原因:一是一般不会再部署应用的服务器上分析 dump 文件,因为分析工作是一个耗时而且消耗硬件资源的过程。另一个原因是 jhat 的分析功能还比较简陋,比起后面介绍的 VisualVM 等工具还差得很多。
查看线程堆栈:jstack 命令
jstack 命令用于导出 Java 应用程序的线程堆栈。jstack命令格式:
jstack [option] vmid
下面使用jstack查看一个线程对战的例子:
nobody $ jstack -l 2618
2016-05-15 23:39:04
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.79-b02 mixed mode):
"Attach Listener" daemon prio=5 tid=0x00007f83228e6000 nid=0x280b waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"DestroyJavaVM" prio=5 tid=0x00007f832387e800 nid=0x1303 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
远程主机信息收集:jstatd 命令
jstad 命令用于收集远程主机信息。
多功能命令行:jcmd 命令
jcmd 命令可以针对给定的 Java 虚拟机执行一条命令。
性能统计工具:hprof
- JVM基础系列开篇:为什么要学虚拟机?
- JVM基础系列第1讲:Java 语言的前世今生
- JVM基础系列第2讲:Java 虚拟机的历史
- JVM基础系列第3讲:到底什么是虚拟机?
- JVM基础系列第4讲:从源代码到机器码,发生了什么?
- JVM基础系列第5讲:字节码文件结构
- JVM基础系列第6讲:Java虚拟机内存结构
- JVM基础系列第7讲:JVM类加载机制
- JVM基础系列第8讲:JVM 垃圾回收机制
- JVM基础系列第9讲:JVM垃圾回收器
- JVM基础系列第10讲:垃圾回收的几种类型
- JVM基础系列第11讲:JVM参数之堆栈空间配置
- JVM基础系列第12讲:JVM参数之查看JVM参数
- JVM基础系列第13讲:JVM参数之追踪类信息
- JVM基础系列第14讲:JVM参数之GC日志配置
- JVM基础系列第15讲:JDK性能监控命令
JDK性能监控命令的更多相关文章
- JVM基础系列第15讲:JDK性能监控命令
查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...
- linux下的进程、网络、性能监控命令
进程监控 端口 1)netstat -anp | grep xxx 2)lsof -i:<port> 句柄 lsof -n | grep xxxx 线程栈 1)gst ...
- linux性能监控命令(vmstat、sar、iostat、netstat)
1.常用系统命令Vmstat.sar.iostat.netstat.free.ps.top等 2.常用组合方式• 用vmstat.sar.iostat检测是否是CPU瓶颈• 用free.vmstat检 ...
- linux性能监控命令
vmstat 可以用来监控虚拟内存.可对操作系统的虚拟内存.IO.CPU等多个指标的整体情况进行监视. Linux系统的内存分为物理内存和虚拟内存两种.物理内存是真实的,也就是物理内存条上的内存.而虚 ...
- Mongodb常用的性能监控命令
1.显示服务器状态:db.serverStatus() 2.mongodb可以通过profile来监控数据,进行优化. 查看当前是否开启profile功能:db.getProfilingLe ...
- 【性能测试】Linux性能监控命令——sar详解
转载:https://blog.csdn.net/mig_davidli/article/details/52149993 sar命令可以从文件的读写情况.系统调用的使用情况.磁盘I/O.CPU效率. ...
- 相关不同Linux系统的性能监控命令整理
Linux系统 查看系统版本情况: $uname -a 监控进程的CPU,MEM使用情况: $ps –aux 过滤方式命令:$ ps -aux|awk '{print $3,$4,$11}'|sort ...
- JVM系列八(虚拟机性能监控命令).
jps JVM Process Status Tool,显示指定系统内所有的 HotSpot 虚拟机进程.显示信息包括虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID(Local Virtual M ...
- Linux服务器常用性能监控命令汇总
1.ifconfig 网卡数目.ip地址.Mac地址.MTU大小 eth0 Link encap:Ethernet HWaddr 00:0d:3a:50:12:e9 inet addr:10.0.0. ...
随机推荐
- Vim 中进行文件目录操作
Vim 中进行文件目录操作 当前文件名 我们知道Vim有48个寄存器,其中%只读寄存器中保存着当前文件路径. 例如在/home/harttle/下打开src/main.cpp,我们打印%的值: :ec ...
- Docker08-网络管理
目录 桥接网络 Bridge Network 相关操作命令 实例演示:容器之间通过自定义bridge通讯 宿主网络 Host Network Overlay Network 相关操作命令 实例演示:容 ...
- GRUB配置与应用,启动故障分析解决
一.GRUB启动位置 GRUB是现今大多数Linux系统采用的自举程序,这里先来看一下Linux的程序顺序: 执行顺序 动作 固件Firmware(CMOS/BIOS) → POST(Pwer ...
- cetos报错“Lack of free swap space” 解决方法
前提:今天发现某台主机一直报警:swap内存被用光 1.查看了服务器的内存情况[发现在物理内存还剩余的情况下,swap开始被使用,甚至到被用光][root@note1 ~]# free -htotal ...
- 详解Linux操作系统的iptables原理及配置
linux网络防火墙 netfilter :内核中的框架,过滤框架,网络过滤器! iptables :实现数据过滤.net.mangle等规则生成的工具 防火墙:硬件.软件.规则(匹配规则.处理办法 ...
- 矩阵LU分解程序实现(Matlab)
n=4;%确定需要LU分解的矩阵维数 %A=zeros(n,n); L=eye(n,n);P=eye(n,n);U=zeros(n,n);%初始化矩阵 tempU=zeros(1,n);tempP=z ...
- JAVA 时间转换、获取
/** * 将字符串格式的时间转换成Timestamp * * @param time * @param formatStyle * @return */ public static Timestam ...
- 如何将 egg-validate 插件的错误提示,修改为中文?
方案一(需要找到所有的提示并对应成中文,不是一个好方案:例子地址:https://github.com/cag2050/egg_mysql_demo/blob/master/app/controlle ...
- 牛客NOIP暑期七天营-普及组2D
链接:https://ac.nowcoder.com/acm/contest/926/D来源:牛客网 在一维坐标系中,给定 n条有颜色的线段,第 i条线段的左右端点分别为 li和 ri,此外它的颜 ...
- 编程语言和python介绍, 变量,小整数池,垃圾回收机制
1.编程语言的发展史 计算机是基于电工作(基于高.低电平)1010010101011 1.机器语言 优点:执行速度够快 缺点:开发效率非常低 2.汇编语言(通过英文字符组成) 优点:执行效率相较于机器 ...