`
LiuYiJie2007
  • 浏览: 13808 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JMC诊断工具

 
阅读更多

1 JDK8 使用 jcmd 代替以前版本中的jstack, jinfo, and jmap 工具使用

 

2JMC 诊断,JMC是由JMX,JFR和其它几个可下载功能插件共同组成,其中:

   a.JMX起到监控和管理作用。能够连接运行中的jvm,能实时的收集和显示一些关键的属性

      b. JFR性能分析

   c. 在jdk8环境下,可以触发用户自定义的行为和规则

   d.JMC的其它插件   如: - WLS, DTrace[类似JFR], JOverflow[分析 heap情况]

     程序增加参数  -XX:+UnlockCommercialFeatures -XX:+FlightRecorder

 

3 JFR 有2种录制方案

        I 使用 Continuous Recordings,对应用程序不会有太多的性能影响。但是没有heap statistics or allocation profiling相关信息,对调试罕见的错误非常有用。

       II 使用Profiling Recordings,会获取到很多有用的信息,对应用程序会产生较大的影响,甚至达到2%的影响,主要用在以下3个方面

           a 分析 大对象创建和方法调用情况

           b 查找  使用越来越多内存的class,可能导致内存泄漏。即不能正确回收内存的class

           c 查找 类似 synchronized 导致的 性能瓶颈

 

4  有三种方法启动JFR

          I  Start a profiling recording

                 java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=delay=20s,duration=60s,name=myrecording,filename=C:\TEMP\myrecording.jfr,settings=profile MyApp

         II   Start a continuous recording

              java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=default recording=true,disk=true,repository=/tmp,maxage=6h,settings=default MyApp

        III   使用 JCMD Utility 启动

        jcmd pid help

        jcmd pid JFR.start name=MyRecording settings=profile delay=20s duration=2m  filename=C:\TEMP\myrecording.jfr

 

Native Memory Tracking

       I  应用设置 -XX:NativeMemoryTracking=summary or -XX:NativeMemoryTracking=detail

       II  jcmd <pid> VM.native_memory summary or jcmd <pid> VM.native_memory detail.

       III  jcmd <pid> VM.native_memory baseline

           jcmd <pid> VM.native_memory summary.diff   or   jcmd <pid> VM.native_memory detail.diff

 

6 java -agentlib:hprof=help

       I 单个类的性能分析

          java -agentlib:hprof=heap=sites ToBeProfiledClass

          javac -J-agentlib:hprof=heap=sites  ToBeProfiledJAVA[部分性能]

      II 配置成整体项目运行

             -agentlib:hprof=heap=dump,cpu=samples,format=b

       如导出以下文件:java.hprof

 7  Jhat  工具使用

          启动 jhat java.hprof

          

 

8 jstat 工具

      jstat -help  / jstat -options

        如:jstat -gcutil pid 1s 10



 

9 jconsole   远程配置

-Djava.rmi.server.hostname=192.168.2.3

-Dcom.sun.management.jmxremote

-Dcom.sun.management.jmxremote.port=9999

-Dcom.sun.management.jmxremote.ssl=false

 

-Dcom.sun.management.jmxremote.authenticate=false



 

10 Detect Deadlocks

        增加参数 -XX:+PrintConcurrentLocks

        heap summary:-XX:+PrintClassHistogram 打出详情

  • 大小: 45.6 KB
  • 大小: 109.5 KB
  • 大小: 8.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics