JVM性能监控工具(一)-jdk命令行工具
转载:http://blog.csdn.net/top_code/article/details/51456186
当系统出bug需要定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里所说的数据包括:运行日志,异常堆栈,GC日志,线程快照(threaddump/javacore文件),堆转储快照(heapdump/hprof文件)等。使用适当的虚拟机监控和分析工具可以加快我们分析数据、定位问题的速度。
JDK的命令行工具
JDK本身提供了很多方便的JVM性能监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具。它们在JDK的bin目录之下:
1.jps
说明
jps(JVM Process Status Tool)用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。
命令格式
> jps [options] [hostid]
- 1
jps常用options如下表:
| 选项 | 作用 |
|---|---|
| -q | 只输出LVMID,省略主类的名称 |
| -m | 输出虚拟机进程启动时传递给主类main()函数的参数 |
| -l | 输出主类的全名,如果进程执行的是jar,输出jar路径 |
| -v | 输出虚拟机进程启动时JVM参数 |
示例
> jps -l
- 1
2.jstat
说明
jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机中的类装载、内存、垃圾收集、JIT编译等运行数据。
命令格式
> jstat [option vmid [interval count]]
- 1
参数说明
- option – 选项,代表用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集、运行期编译状况。
- vmid – VM的进程号,即当前运行的java进程号
- interval – 间隔时间,单位为秒或者毫秒
- count – 打印次数,如果缺省则打印无数次
jstat 常用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编译器编译的方法 |
输出内容含义如下:
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 – 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
示例
参数interval和count代表查询间隔和次数,如果省略这两个参数,说明只查询一次。如下:
[root@localhost bin]# jstat -gcutil 25444
- 1
每500毫秒查询一次进程25444 垃圾收集状况,一共查询10次,如下:
[root@localhost bin]# jstat -gcutil 25444 500 10
- 1
[root@localhost bin]# jstat -gcnewcapacity 25444
- 1
[root@localhost bin]# jstat -gcold 25444
- 1
jstat -class pid:显示加载class的数量,及所占空间等信息。
[root@localhost bin]# jstat -class 25444
- 1
jstat -compiler pid:显示VM实时编译的数量等信息。
[root@localhost bin]# jstat -compiler 25444
- 1
3.jinfo
说明
jinfo(Configuration Info for Java)可观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数;也可从core文件里面知道崩溃的Java应用程序的配置信息。
命令格式
> jinfo [option] pid
- 1
示例
4.jmap
说明
jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。
命令格式
jmap [option] vmid
- 1
option选项如下表所示:
| 选项 | 作用 |
|---|---|
| -heap | 显示jvm heap详细信息 |
| -histo | 显示jvm heap中对象统计信息,包括类,实例数量,合计容量 |
| -dump | 生成Java堆转储快照。格式为:-dump:[live],format=b,file=filename,其中live子参数说明是否只dump出存活的对象 |
示例
观察到java heap的内存使用情况
[root@localhost bin]# jmap -heap 2083
- 1
观察heap中所有对象的情况,包括对象数量和所占空间大
[root@localhost bin]# jmap -histo 2083
- 1
[root@localhost bin]# jmap -histo:live 2083
- 1
dump出所有对象文件可用于进一步分析
[root@localhost bin]# jmap -dump:format=b,file=heap.bin 2083
- 1
dump出存活的对象文件可用于进一步分析
[root@localhost bin]# jmap -dump:live,format=b,file=heap.bin 2083
- 1
5.jstack
说明
jstack (Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump)。线程快照就是当前虚拟机内每一条线程正在执行的的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间的死锁、死循环、请求外部资源导致的长时间等待 等都是导致线程长时间停顿的原因。
命令格式
> jstack [option] vmid
- 1
option选项如下表所示:
| 选项 | 作用 |
|---|---|
| -F | 当正常输出的请求不被响应时,强制输出线程堆栈 |
| -l | 除堆栈外,显示关于锁的附加信息 |
| -m | 如果调用到本地方法的话,可以显示C/C++的堆栈 |
JVM性能监控工具(一)-jdk命令行工具的更多相关文章
- JVM性能监控与故障处理命令行工具
JDK命令行工具 Sun公司作为”礼物“赠送给JDK使用者的工具: 这些命令行工具大多是jdk/lib/tools.jar类库的一层薄包装,主要功能代码是在tools类库(不属于java的标准API) ...
- JVM-JDK命令行工具
JDK命令行工具 当我们进入JDK的安装目录里面的/bin目录,会发现有很多小工具,有我们熟悉的也经常用的java,javac,也有很多我们不怎么用到很陌生的工具.下面看看哪些平时不怎么用到的工具吧. ...
- jdk命令行工具(一)
1.概述 熟悉java开发的人应该都知道在jdk的bin目录下有许多的工具,这些工具主要用于监视虚拟机和故障处理.这些故障处理工具被Sun公司称作为“礼物”附赠给JDK的使用者,并在软件的使用说明中把 ...
- 监控Linux性能的18个命令行工具
监控 Linux 性能的 18 个命令行工具 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐 认识到监控和保 ...
- JVM调优前戏之JDK命令行工具---jhat
在JDK的命令行中,一般开发人员最耳熟能详的肯定就是java,javac,javap等常用命令,不过在jdk/bin下还有许多其他的命令行工具,它们被用来监测JVM运行时的状态,下面我们来详细解读一下 ...
- JVM调优前戏之JDK命令行工具---jstack
在JDK的命令行中,一般开发人员最耳熟能详的肯定就是java,javac,javap等常用命令,不过在jdk/bin下还有许多其他的命令行工具,它们被用来监测JVM运行时的状态,下面我们来详细解读一下 ...
- 监控 Linux 性能的 18 个命令行工具
http://www.oschina.net/translate/command-line-tools-to-monitor-linux-performance 1.Top-Linux进程监控 Lin ...
- [转载]监控 Linux 性能的 18 个命令行工具
转自:http://www.kuqin.com/shuoit/20140219/338066.html 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一 ...
- 监控 Linux 性能的 18 个命令行工具[转]
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们 ...
随机推荐
- Linux各发行版本及其软件包管理方法
Linux发行版本有很多,按照使用领域分为桌面系统领域和服务器领域.下面简要介绍如下: 1.Red Hat和Fedora:redhat最早发行的个人版本的Linux,自从Red Hat 9.0版本发布 ...
- 【剑指offer】面试题 2. 实现 Singleton 模式
面试题 2. 实现 Singleton 模式 题目:设计一个类,我们只能生成该类的一个实例. 单例模式:确保一个类只有一个实例,并提供了一个全局访问点. Java 实现 1.饿汉模式 //饿汉模式 p ...
- python 正则表达式匹配中文(转)
网上的一篇文章,做了整理,作者已无从考证,谢谢了 s=""" en: Regular expression is a powerful tool for manipula ...
- Java中HashMap(泛型嵌套)的遍历
//Studnet package yzhou.gen03; public class Student<T> { private T score; public T getScore() ...
- 洛谷P1908 逆序对 [权值线段树]
题目传送门 逆序对 题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为“逆序对”的 ...
- smail修改字符串 汉字
韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com 将smali文件中的unicode字符串变为汉字
- [BZOJ2458][BeiJing2011]最小三角形(分治)
求平面上n个点组成的周长最小的三角形. 回忆平面最近点对的做法,找到横坐标的中点mid分治到两边,合并时考虑离mid横坐标不超过当前最小值d的所有点,按y排序后暴力更新答案. 这个题也一样,先分治到两 ...
- 【线段树区间合并】BZOJ1593-[Usaco2008 Feb]Hotel 旅馆
好无聊,以前写过没什么好讲的,水过.戳 #include<iostream> #include<cstdio> #include<cstdlib> #define ...
- 【Floyd】POJ1125-Stockbroker Grapevine
水题,裸的Floyd.最后要求遍历一遍图的最短路径,只需要枚举将当前每一个点作为起始点.如果它不能到达其中的某一点,则该点不可能作为起始点:否则,由该点开始遍历全图的最短路径是到所有点距离中的最大值. ...
- Java学习笔记(10)
目前多态情况下不能访问子类特有的成员 如果需要访问子类特有的成员,那么需要进行类型强制转换,转换为子类的类型然后再进行调用 基本数据类型的转换: 小数据类型------------->大数据类型 ...