java 性能监控 jstack 线程死锁 JConsole 和 BTrace 图形化工具

转自:http://blog.csdn.net/never_cxb/article/details/48197967

java 性能监控 工具

除了 javac java javap 之外, jdk 安装包还提供了很多其他工具 
列出 bin 目录下的文件

<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-constant" style="box-sizing: border-box;">TomChens</span>-<span class="hljs-constant" style="box-sizing: border-box;">MacBook</span>-<span class="hljs-constant" style="box-sizing: border-box;">Pro</span><span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:Commands</span> tomchen<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$ </span>ls
appletviewer    javadoc     jmap        keytool     serialver
apt     javah       jmc     native2ascii    servertool
extcheck    javap       jps     orbd        tnameserv
idlj        javaws      jrunscript  pack20<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>     unpack20<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>
jar     jcmd        jsadebugd   policytool  wsgen
jarsigner   jconsole    jstack      rmic        wsimport
java        jdb     jstat       rmid        xjc
java_home   jhat        jstatd      rmiregistry
javac       jinfo       jvisualvm   schemagen</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul>

jvisualvm

可以在线安装很多插件, 这是最新的非常强大的多合一故障处理工具

jvisualvm界面

生成 Heap Dump, 可以在OQL Console 执行类似 sql 语句的 OQL

Heap Dump界面

jvisualvm 的 BTrace 插件

生产环境服务无法停止的时候, 而日志里的信息无法满足我们需要时候, 可以通过这个打印调用堆栈 参数 返回值等

jconsole

也是一个图形化的监控工具

jconsole界面

jps 虚拟机进程状况工具

类似于 ps 命令

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">jps -l
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">582</span> HttpFind
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">431</span> RefreshBlog<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.jar</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">585</span> sun<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.tools</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.jps</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Jps</span>
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>

jstat 虚拟机统计信息监控工具

<code class="hljs mathematica has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> jstat -gcutil <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">431</span>
  S0     S1     <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">E</span>      <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">O</span>      P     YGC     YGCT    FGC    FGCT     GCT   
  <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.00</span>  <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">57.17</span>  <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">12.43</span>  <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">24.74</span>  <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">42.31</span>     <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">13</span>    <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.044</span>     <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.000</span>    <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.044</span>
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

从中可以看出 survivor(S0 S1) eden (E) young GC(YGC) 等参数


<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">jstat <span class="hljs-attribute" style="box-sizing: border-box;">-class</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">434</span>
Loaded  <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">Bytes</span>  Unloaded  <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">Bytes</span>     Time   
 <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">17095</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">36897.7</span>     <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1899</span>  <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2970.9</span>      <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">14.87</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

类加载时间为14.87

jstack java堆栈管理工具

可以查看线程死锁

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">jstack <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">582</span>
......
......
Found one Java-level deadlock:
=============================
<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Thread-199"</span>:
  waiting to lock monitor <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00007facb3027608</span> (object <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00000007e786b528</span>, a java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Integer</span>),
  which is held by <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Thread-3"</span>
<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Thread-3"</span>:
  waiting to lock monitor <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00007facb3026108</span> (object <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00000007e786b518</span>, a java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Integer</span>),
  which is held by <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Thread-8"</span>
<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Thread-8"</span>:
  waiting to lock monitor <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00007facb3027608</span> (object <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00000007e786b528</span>, a java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Integer</span>),
  which is held by <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Thread-3"</span>

Java stack information for the threads listed above:
===================================================
<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Thread-199"</span>:
    at HttpFind$SyncAdd<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.run</span>(HttpFind<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.java</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">52</span>)
    - waiting to lock <<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00000007e786b528</span>> (a java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Integer</span>)
    at java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Thread</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.run</span>(Thread<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.java</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">722</span>)
<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Thread-3"</span>:
    at HttpFind$SyncAdd<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.run</span>(HttpFind<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.java</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">53</span>)
    - waiting to lock <<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00000007e786b518</span>> (a java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Integer</span>)
    - locked <<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00000007e786b528</span>> (a java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Integer</span>)
    at java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Thread</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.run</span>(Thread<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.java</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">722</span>)
<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Thread-8"</span>:
    at HttpFind$SyncAdd<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.run</span>(HttpFind<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.java</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">53</span>)
    - waiting to lock <<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00000007e786b528</span>> (a java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Integer</span>)
    - locked <<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0x00000007e786b518</span>> (a java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Integer</span>)
    at java<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.lang</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Thread</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.run</span>(Thread<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.java</span>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">722</span>)

Found <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> deadlock.
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li></ul>

jhat 虚拟机堆转储快照分析工具

jinfo java 配置信息工具

jmap java 内存印象工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值