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性能调优监控工具

JVM性能调优监控工具jpsjstackjmapjhatjstat使用详解

JVM性能调优监控工具jpsjstackjmapjhatjstathprof使用详解

JVM性能调优监控工具jpsjstackjmapjhatjstathprof使用详解

JVM性能调优监控工具jpsjstackjmapjhatjstat使用详解

JVM性能调优监控工具jpsjstackjmapjhatjstathprof使用详解

(c)2006-2024 SYSTEM All Rights Reserved IT常识