JDK命令行工具
Sun公司作为”礼物“赠送给JDK使用者的工具:
这些命令行工具大多是jdk/lib/tools.jar类库的一层薄包装,主要功能代码是在tools类库(不属于java的标准API)中实现的。
Sun JDK监控与故障处理命令行工具
1、jps:虚拟机进程状况工具
可以列出正在运行的虚拟机进程,显示虚拟机执行主类名称,以及这些进程的本地虚拟机的唯一ID(LVMID,对于本地虚拟机进程来说LVMID与操作系统的进程PID是一致的)。
命令格式: jps [ options ] [ hostid ]
主要选项:
2、jstat:虚拟机统计信息监视工具
监视虚拟机各种运行状态信息,显示虚拟机进程的类装载、内存、垃圾收集、JIT编译等运行数据。
命令格式: jstat [ options vimd [interval [s|ms] [count] ] ]
远程虚拟机进程vimd格式:[protocol:][//]vimid[@hostname[:port]/servername]
主要选项:
例子:
jstat -gc 2764 250 20 --每250ms查询一次进程2764垃圾收集的状况,一共查询20次
jstat -gcutil 2764 --查看进程2764堆内存占用情况
- 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:实时查看和调整虚拟机的各项参数
命令格式: jinfo [ options ] pid
主要选项: -flag name 查看参数值
-flag name=value 修改参数值
例子:
jinfo -flag CMSRevisitStackSize 2764 --查看CMSRevisitStackSize 参数值
查看参数值的其他方法:
java -XX:+PrintFlagsFinal
4、jmap:java内存映像工具
主要用于生成堆转储快照(一般称为heapdump或dump文件),还可以查询finalize执行队列、java堆和永久代的详细信息、当前使用哪种收集器等。
命令格式: jinfo [ options ] vmid
主要选项:
例子:
5、jhat:虚拟机堆转储快照分析工具
与jmap搭配使用,来分析jmap生成的堆转储快照文件,jhat内置有微型的http服务器,分析结果通过浏览器查看。
例子:
显示Server is ready后在浏览器中查看:http://serverip:7000:
导出后的映像文件用jhat进行分析时,-J参数是向java虚拟机传一个参数,如-mx768m是指定虚拟机可用最大的内存为768M。如果映像文件很大,你要指定一个很大的值,否则在分析过程中就会有OutOfMemeryError的错误。如:
对于jhat启动后显示的html页面中功能:
(1)显示出堆中所包含的所有的类
(2)从根集能引用到的对象
(3)显示平台包括的所有类的实例数量
(4)堆实例的分布表
(5)执行对象查询语句
更多关于对象查询语言的信息,见这篇文章:http://blog.****.net/gtuu0123/archive/2010/11/27/6039592.aspx
6、jstack:java堆栈跟踪工具
用于生成虚拟机当前时刻的线程快照(一般称为threaddump或javacore文件),线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。
命令格式: jstack [ options ] vmid
主要选项:
例子:
资料:
JDK实用工具集:http://docs.oracle.com/javase/6/docs/technotes/tools/index.html
关于Java性能监控您不知道的5件事,第1部分:http://www.ibm.com/developerworks/cn/java/j-5things7.html
关于Java性能监控您不知道的5件事,第2部分:http://www.ibm.com/developerworks/cn/java/j-5things8.html
从转储(Dump)文件中调试并除错:http://www.ibm.com/developerworks/cn/java/j-memoryanalyzer/