JVM性能调优监控工具jpsjstackjmapjhatjstathprof使用详解
Posted Elvis_lfc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM性能调优监控工具jpsjstackjmapjhatjstathprof使用详解相关的知识,希望对你有一定的参考价值。
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。现实企业级Java开发中,有时候我们会碰到下面这些问题:
OutOfMemoryError,内存不足
内存泄露
线程死锁
锁争用(Lock Contention)
Java进程消耗CPU过高
......
这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。本文参考了网上很多资料,难以一一列举,在此对这些资料的作者表示感谢!关于JVM性能调优相关的资料,请参考文末。
A、 jps(Java Virtual Machine Process Status Tool)
jps主要用来输出JVM中运行的进程状态信息。语法格式如下:
1 |
<code class=
"hljs css"
><span class=
"hljs-selector-tag"
>jps <span class=
"hljs-selector-attr"
>[options] <span class=
"hljs-selector-attr"
>[hostid]<
/span
><
/span
><
/span
><
/code
>
|
如果不指定hostid就默认为当前主机或服务器。
命令行参数选项说明如下:
1 2 3 4 |
<code class=
"hljs haml"
>-<span class=
"ruby"
>q 不输出类名、Jar名和传入main方法的参数
-<span class=
"ruby"
>m 输出传入main方法的参数
-<span class=
"ruby"
>l 输出main类或Jar的全限名
-<span class=
"ruby"
>
v
输出传入JVM的参数<
/span
><
/span
><
/span
><
/span
><
/code
>
|
比如下面:
1 2 3 4 5 6 7 8 |
<code class=
"hljs less"
>root<span class=
"hljs-variable"
>@ubuntu:/
# jps -m -l
<span class=
"hljs-number"
>2458 org.artifactory.standalone.main.Main
/usr/local/artifactory-
<span class=
"hljs-number"
>2.2.<span class=
"hljs-number"
>5
/etc/jetty
.xml
<span class=
"hljs-number"
>29920 com.sun.tools.hat.Main -port <span class=
"hljs-number"
>9998
/tmp/dump
.dat
<span class=
"hljs-number"
>3149 org.apache.catalina.startup.Bootstrap start
<span class=
"hljs-number"
>30972 sun.tools.jps.Jps -m -l
<span class=
"hljs-number"
>8247 org.apache.catalina.startup.Bootstrap start
<span class=
"hljs-number"
>25687 com.sun.tools.hat.Main -port <span class=
"hljs-number"
>9999 dump.dat
<span class=
"hljs-number"
>21711 mrf-center.jar<
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/code
>
|
B、 jstack
jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式如下:
1 2 3 |
<code class=
"hljs css"
><span class=
"hljs-selector-tag"
>jstack <span class=
"hljs-selector-attr"
>[option] <span class=
"hljs-selector-tag"
>pid
<span class=
"hljs-selector-tag"
>jstack <span class=
"hljs-selector-attr"
>[option] <span class=
"hljs-selector-tag"
>executable <span class=
"hljs-selector-tag"
>core
<span class=
"hljs-selector-tag"
>jstack <span class=
"hljs-selector-attr"
>[option] <span class=
"hljs-selector-attr"
>[server-
id
@]<span class=
"hljs-selector-tag"
>remote-
hostname
-or-ip<
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
><
/span
以上是关于JVM性能调优监控工具jpsjstackjmapjhatjstathprof使用详解的主要内容,如果未能解决你的问题,请参考以下文章 JVM性能调优监控工具jpsjstackjmapjhatjstat使用详解 JVM性能调优监控工具jpsjstackjmapjhatjstathprof使用详解 JVM性能调优监控工具jpsjstackjmapjhatjstathprof使用详解 |