Java 排查,评测/刨析,监测,管理的工具の简介

每一种计算机开发语言为了辅助开发都会给出一系列的工具来辅助开发。

比如python开发的时候上层会有line_profiler分析语句级别的工具,然后底层会有memory_profiler分析内存,cpu,进程,线程的工具。这些算是动态分析工具,还有静态分析工具Pylint。

这里简单介绍一些java的排查,评测/刨析,监测,管理的工具

jcmd
    jdk1.7之后新加的工具。该工具需要向jvm发送诊断命令,所以必须和jvm在同一台机器上使用。并且需要拥有和jvm同等权限。
    需要远程调用jcmd的时候,可以使用com.sun.management.DiagnosticCommandMBean接口。
    如果在没有参数或使用-l选项的情况下运行jcmd,它将打印运行Java进程标识符的列表,其中包含用于启动进程的主类和命令行参数。使用-h或-help选项运行jcmd会打印工具的帮助消息。
    jcmd实用程序可用于在已经运行的JVM中与Java Flight Recorder(JFR)进行动态交互。       
        > jcmd         
        5485 sun.tools.jcmd.JCmd  
        2125 MyProgram 
        > jcmd MyProgram help (or "jcmd 2125 help")                        
        2125:                        
        The following commands are available:                        
        JFR.stop                        
        JFR.start                        
        JFR.dump                        
        JFR.check                        
        VM.native_memory             查看原生内存信息            
        VM.check_commercial_features                        
        VM.unlock_commercial_features                        
        ManagementAgent.stop                        
        ManagementAgent.start_local                        
        ManagementAgent.start                        
        Thread.print                        
        GC.class_stats                        
        GC.class_histogram            堆直方图查看            
        GC.heap_dump                   堆转储            
        GC.run_finalization                        
        GC.run                        
        VM.uptime                        
        VM.flags                               获取启动参数            
        VM.system_properties         获取系统Properties内容            
        VM.command_line                        
        VM.version                        
        help                        
        > jcmd MyProgram help Thread.print                        
        2125:                        
        Thread.print                        
        Print all threads with stacktraces.                        
        Impact: Medium: Depends on the number of threads.                        
        Permission: java.lang.management.ManagementPermission(monitor)                        
        Syntax : Thread.print [options]                        
        Options: (options must be specified using the <key> or <key>=<value> syntax)                                        -l : [optional] print java.util.concurrent locks (BOOLEAN, false)                        
        > jcmd MyProgram Thread.print                        
        2125:                        
        2014-07-04 15:58:56                        
        Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.0-b69 mixed mode):                       
参考
https://www.cnblogs.com/caibh/p/13787158.html  https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html#BABFFIFA    
           

jconsole        
    图形控制台,用于监视和管理Java应用程序。    
    一种基于JMX的可视化监视、管理工具。    
    可以监控本地的jvm,也可以监控远程的jvm,也可以同时监控几个jvm。     
        
参考    
https://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr009.html#BABDCICF

             

jvisualvm                    
    JavaVisualVM将多个监视、故障排除和分析实用程序组合到一个工具中。                
    例如,独立工具jmap、jinfo、jstat和jstack提供的大部分功能都集成到了JavaVisualVM中。       
    其他功能,例如jconsole命令提供的一些功能,可以作为可选插件添加。                
    可以通过JMX或RMI的方式监控远程的JVM实例                
参考                
https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/index.html    
        
 

JMC    JDK Mission Control
    一组高级工具,用于管理、监视、分析和故障排除Java应用程序。JMC能够对代码性能、内存和延迟等领域进行高效、详细的数据分析,而不会引入通常与分析和监视工具相关的性能开销。   
    JMC由以下客户端应用程序和插件组成:                        
    JVM浏览器:显示正在运行的Java应用程序及其JVM。                        
    JMX控制台:是一种用于监视和管理JVM的机制。它连接到正在运行的JVM,收集、实时显示其特征,并使您能够通过托管bean(MBean)更改其一些运行时属性。您还可以创建在某些事件上触发的规则(例如,如果应用程序的CPU使用率达到90%,则发送电子邮件)。                        
    Flight Recorder(JFR):是一种用于收集有关正在运行的Java应用程序的诊断和分析数据的工具。它被集成到JVM中,导致非常小的性能开销,因此可以在生产环境中使用。JFR不断地保存有关正在运行的应用程序的大量数据。此配置文件信息包括线程示例、锁配置文件和垃圾收集详细信息。JFR在逻辑分组的表格和图表中显示诊断信息。它使您能够选择关注问题所需的时间范围和详细程度。当联系Oracle支持部门以帮助诊断Java应用程序的问题时,JFR收集的数据可能非常重要。                        
    jcmd实用程序或诊断命令用于向JVM发送诊断命令请求。这些请求对于管理来自Flight Recorder的记录、故障排除以及诊断JVM和Java应用程序非常有用。                        
                            
    JFR    Flight Recorder (JFR)                    
        是一种用于收集有关正在运行的Java应用程序的诊断和分析数据的工具。                    
        它集成到Java虚拟机(JVM)中,几乎不会造成性能开销,即使在负载很重的生产环境中也可以使用它。                    
        一般情况下性能影响小于1%。特殊情况下可能超过1%。                    
        JFR收集有关JVM以及在其上运行的Java应用程序的数据。                    
                            
        可以监视第三方应用程序,包括WebLogic Server和其他Oracle产品。                    
                            
        黑箱分析 JFR不断地将信息保存到循环缓冲区。当检测到异常以查找原因时,可以访问此信息。                    
        这里保存有关运行系统的大量数据。此配置文件信息包括线程示例(显示程序花费时间的位置)、锁配置文件和垃圾收集详细信息。                     
                            
        默认情况下,JVM中禁用JFR。要启用JFR,必须使用-XX:+FlightRecorder选项启动Java应用程序。                    
        由于JFR是一种商业功能,仅在基于Java平台的商业软件包标准版(Oracle Java SE Advanced和Oracle Java SE Suite)中可用,因此还必须使用-XX:+UnlockCommercialFeatures选项启用商业功能。                    
        java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder MyApp                    
                            
    参考                        
        https://docs.oracle.com/en/java/java-components/jdk-mission-control/8/user-guide/jmc-application-gui.html                    
        https://blog.csdn.net/qq_38340601/article/details/110320566                    
        https://blog.csdn.net/yunfeng482/article/details/89384912                    
        https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/about.htm#JFRUH170     
        Flight Recorder和JMC共同创建了一个完整的工具链,以持续收集低级别和详细的运行时信息,从而实现事后事件分析。                    
        https://docs.oracle.com/en/java/java-components/jdk-mission-control/8/user-guide/using-jdk-flight-recorder.html#GUID-D38849B6-61C7-4ED6-A395-EA4BC32A9FD6      
             
                            
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值