java jvm 记录(一)

在第一篇中,我们来介绍查看jvm运行状态的一些工具。

[size=large]jps[/size]

jps用来查看当前系统中运行的java程序

jps, 使用默认参数的话,直接显示出java程序的pid(即vmid)和运行的程序名称。

[img]http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/images/jps-01.png[/img]

jps, 使用-v参数,显示传入到jvm的参数.

[img]http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/images/jps-04.png[/img]

[size=large]jcmd[/size]
jcmd是jdk7中提供的新工具, 可以获得比jps更多的信息.

jcmd, 使用默认参数, 显示pid和类名称(或者jar名称)
[img]http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/images/jcmd-01.png[/img]

jcmd中最重要的是,使用jcmd pid help,可以查看jvm中允许jcmd获取哪些信息. 如
[img]http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/images/jcmd-03.png[/img]


下面例子中,也可以直接使用类名称(或者jar名称)来代替pid来执行. 即下面三行的执行效果是一样的.

jcmd example.jar help
jcmd path/example.jar help
jcmd pid help


例如:1. 显示VM版本
jcmd pid VM.version
[img]http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/images/jcmd-04.png[/img]

例如:2. 显示系统信息
jcmd pid VM.system_properties
[img]http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/images/jcmd-05.png[/img]

例如:3. 显示GC相关参数
jcmd pid VM.flags
[img]http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/images/jcmd-06.png[/img]

例如:4. 显示vm工作时间
jcmd pid VM.uptime
[img]http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/images/jcmd-07.png[/img]

例如:5. 显示类柱形图
jcmd pid GC.class_histogram > histo.txt
这里和jmap -histo pid的效果是一样的.
[img]http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/images/jcmd-08.png[/img]

例如: 6. 显示全部vm性能相关的参数
jcmd pid PerfCounter.print
[img]http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/images/jcmd-09.png[/img]

例如:7. 显示所有线程的java栈信息
jcmd pid Thread.print
这里和jstack -l pid的效果是一样的。

这里和下面的例子就不再附图了. 可以自己尝试.

例如:8. dump出HPROF格式的内存信息, 保存到/tmp/dump.bin文件中. 这里文件名要使用绝对路径. 如果使用相对路径,会保存到pid进程运行时所在的目录中.
jcmd pid GC.heap_dump /tmp/dump.bin

例如:9. 执行一次finalization操作,相当于执行java.lang.System.runFinalization()
jcmd pid GC.run_finalization


例如:10. 执行一次Full gc操作, 相当于执行java.lang.System.gc()
jcmd pid GC.run

参考文献:
1. [url=http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/index.html]Java SE 7: Reviewing JVM Performance Command Line Tools[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值