JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、jprof

来源:互联网 发布:linux named配置文件 编辑:程序博客网 时间:2024/05/16 23:38

jps

Java virtual machine Process Status Tool
主要用来输出jvm中运行的进程状态信息,语法格式如下:
jps [options] [hostid]

-q 不输出类名、Jar名和传入main方法的参数-m 输出传入main方法的参数-l 输出main类或Jar的全限名-v 输出传入JVM的参数


jstack

主要用来查看某个Java进程内的线程堆栈信息。
jstack [option] pidjstack [option] executable corejstack [option] [server-id@]remote-hostname-or-ip

-l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况-m mixed mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法)

jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体的代码,所以它在jvm性能调优中使用得非常多。

jmap

jmap用来查看堆内存使用状态,一般结合jhat使用。
jmap [option] pidjmap [option] executable corejmap [option] [server-id@]remote-hostname-or-ip

如果运行在64位jvm上,可能需要指定-J-d64命令选项参数。
jmap -permstat pid

使用jmap -heap pid查看进程堆栈内存使用情况,包括使用GC算法、堆配置参数和各代中堆内存使用情况。

使用jmap -histo[:live] pid查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象。

还有一个很常用的情况是:用jmap把进程内存使用情况dump到文件中,再用jhat分析查看
jmap -dump:format=b,file=dumpFileName pid
dump出来的文件可以用mat,visualvm等工具查看,这里使用jhat查看。如果dump文件太大,可能需要加上-J-Xmx512m这种参数指定最大堆内存。

jstat(jvm统计监测工具)

jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
vmid是Java虚拟机ID,在Linux/Unix系统上一般就是进程ID。Interval是采样时间间隔。count是采样数目。比如下面输出的是GC信息,采样的时间间隔为250ms,采样数为4。
jstat -gc 21711 250 4
S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)EC、EU:Eden区容量和使用量OC、OU:年老代容量和使用量PC、PU:永久代容量和使用量YGC、YGT:年轻代GC次数和GC耗时FGC、FGCT:Full GC次数和Full GC耗时GCT:GC总耗时

hprof(Heap /cpu Profiling Tool)

hprof能够展现cpu使用率,统计堆内存使用情况。

java -agentlib:hprof[=options] ToBeProfiledClassjava -Xrunprof[:options] ToBeProfiledClassjavac -J-agentlib:hprof[=options] ToBeProfiledClass

Option Name and Value  Description                    Default---------------------  -----------                    -------heap=dump|sites|all    heap profiling                 allcpu=samples|times|old  CPU usage                      offmonitor=y|n            monitor contention             nformat=a|b             text(txt) or binary output     afile=<file>            write data to file             java.hprof[.txt]net=<host>:<port>      send data over a socket        offdepth=<size>           stack trace depth              4interval=<ms>          sample interval in ms          10cutoff=<value>         output cutoff point            0.0001lineno=y|n             line number in traces?         ythread=y|n             thread in traces?              ndoe=y|n                dump on exit?                  ymsa=y|n                Solaris micro state accounting nforce=y|n              force output to <file>         yverbose=y|n            print messages about dumps     y







阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗窦 狗笼子 狗笼子多少钱 狗笼子的价格 狗笼子批发 狗和猪相配吗 二手大狗笼子 狗笼子图片 批发狗笼子 白钢狗笼子 比熊狗笼子 总裁跪爬狗笼 中型狗笼 不锈钢狗笼价格 狗笼专卖 淘宝狗笼 不锈钢狗笼 淘宝 狗笼 闲置狗笼 求购狗笼 狗笼多少钱 不锈钢狗笼多少钱 狗笼批发 狗笼图片 大型狗笼 猫笼 鸭笼 狗笼批发价格 哪里有卖狗笼 小型狗笼 不绣钢狗笼 卖狗笼 大型狗笼制作 怎样自制狗笼 狗笼地板 狗笼大全 猫笼狗笼 狗笼报价 不锈狗笼 隔音狗笼 狗笼的制作