首页 > 编程语言 >Java线上诊断神器Arthas:常用命令详解!

Java线上诊断神器Arthas:常用命令详解!

时间:2024-03-11 23:59:44浏览次数:21  
标签:Java 示例 Arthas 应用程序 命令 线程 常用命令 开发人员 GC

有关Arthas基本介绍、安装部署、arthas idea插件在上篇文章已经介绍过,这里就不在重述。

文章地址:Java诊断工具Arthas:开篇之watch实战

上篇重点讲了 watch 命令。这篇把剩余一些重要命令讲解演示下。


一、trace命令

作用:展示方法内部调用路径,并输出方法路径上的每个节点上耗时

命令示例

trace com.zhuangpo.event.service.impl.ArthasTestServiceImpl getPassCheck  -n 5 --skipJDKMethod false 

参数解释如下:

trace:命令本身,用于启动追踪。

com.zhuangpo.event.service.impl.ArthasTestServiceImpl:要追踪的类的全限定名

getPassCheck:要追踪的方法名

-n 5:执行追踪的次数,这里设置为 5 次。

--skipJDKMethod false:是否跳过 JDK 自带方法的追踪

执行结果

从执行结果可以看到这个方法的总耗时,还有调用链路各个方法和它们的耗时,最耗时的链路会有红色标注,看去一目了然。


二、stack命令

作用: 就是将一个方法的被调用的链路展示出来。调用链路是自下而上

命令示例

stack com.zhuangpo.event.service.impl.ArthasTestServiceImpl getPassCheck  -n 5  

执行结果

很多时候我们都知道一个方法被执行了,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。


三、jad命令

作用: 是反编译指定已加载类的源码

命令示例

jad --source-only com.zhuangpo.event.service.impl.ArthasTestServiceImpl 

执行结果

这个还是蛮实用的, 因为有时我们经常会不确定线上的代码包否是最新的,这时候就可以通过jad反编译来看下,是否是最新的代码。


四、dashboard命令

作用: 当前系统的实时数据面板

以下是 dashboard 命令的一些常见作用:

  1. 监控应用程序的实时指标: 可以显示应用程序的实时CPU使用率、内存使用情况、线程数等指标,帮助开发人员了解应用程序的运行状态。

  2. 查看应用程序的线程信息: 可以显示当前应用程序的线程列表,包括线程ID、线程状态、线程堆栈等信息,方便开发人员进行线程分析和问题排查。

  3. 显示应用程序的GC情况:可以展示应用程序的垃圾回收(GC)情况,包括GC次数、GC时间、GC类型等信息,帮助开发人员进行GC性能优化和内存泄漏排查。

命令示例

dashboard

执行结果


五、heapdump命令

作用: 可以在应用程序运行时动态生成堆转储文件,而无需停止应用程序。生成的堆转储文件可以使用其他工具(如MAT、VisualVM等)进行进一步分析和诊断。

生成堆转储文件可以帮助开发人员分析应用程序的内存使用情况,包括对象的数量、大小、引用关系等。

通过分析堆转储文件,开发人员可以了解到应用程序中存在的内存泄漏、对象过多或过大等问题,从而进行优化和调试。

命令示例

heapdump /tmp/dump.hprof

相关文件就会生存在/tmp/dump.hprof,可以导入到MAT进行分析

其它的就不一一演示了,具体的可以看官方文档。


相关文档

Arthas官方文档地址:
arthas idea插件GitHub地址

标签:Java,示例,Arthas,应用程序,命令,线程,常用命令,开发人员,GC
From: https://www.cnblogs.com/qdhxhz/p/17823603.html

相关文章

  • JAVA常用类--System类
    System类System是一个在Java开发过程中最常见的一种系统类主要特点:可以直接执行一些系统命令例如:“System.out.println()"就是System类的一种功能本次观察以下几个方法的使用:方法名类型描述publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectd......
  • Java2024-Day01回顾
    publicclassInfo{   publicstaticvoidmain(String[]args){System.out.println("这里是Java2024-Day01")}}1.基本数据类型介绍整数:byte-short-int(默认)-long浮点型:float-double(默认)  后面跟F或f字符型:char:①chara ='XXXX';②char......
  • JAVA常用类--AutoCloseable接口
    AutoCloseable接口自动关闭,释放资源机制在实际的项目开发过程中,一般都有可能连接到一些资源,比如:文件资源、网络资源、数据库资源,在实际项目之中进行资源访问的社会一般有如下几个操作步骤:不使用AutoCLoseable:手动定义关闭函数按照正常的结构设计来讲,当前的程序已经可以满足......
  • JAVA常用类--Cleaner类
    Cleaner类注意:在JDK1.9以上版本可使用在Java程序中提供有GC的垃圾回收机制,如果发现堆内存不足时一定要进行垃圾回收以释放内存空间但如果某些对象在回收前需要做一些处理,可以通过覆写Object类中的finalize()方法来实现这种回收前的处理finalize()方法的定义:@Deprecated(sin......
  • JAVA常用类--Runtime类
    Runtime类Runtime类描述的是一种运行时,在Java程序执行过程中,所有的java程序都一定要运行在JVM(虚拟机)的进程中有了JVM进程,就需要一种类型可以描述当前进程的相关环境以及与之相关的处理操作,即Java设计出了Runtime类每个JVM的进程中都会自动包含有一个Runtime类的实例化对象,打......
  • 贴现率计算程序(java)
    折现率公式: CF0:成本CFi:第i期收入金额r:折现率java代码:importjava.util.ArrayList;importjava.util.Scanner;publicclassTest{publicstaticdoublecalculateNPV(doubleinitialInvestment,ArrayList<Double>cashFlows,doublediscountRate){......
  • Java HashMap 和 HashSet 的高效使用技巧
    JavaHashMapHashMap是一种哈希表,它存储键值对。键用于查找值,就像数组中的索引一样。HashMap的优势在于它可以使用任何类型作为键,并且查找速度很快。创建HashMap//导入HashMap类importjava.util.HashMap;publicclassMain{publicstaticvoidmain(String[]a......
  • java环境搭建
    1.计算机硬件冯诺依曼体系输入设备,输出设备,计算器,控制器(这两个就是cpu),存储器(包含内存和外存,外存就是硬盘啥的)2.计算机软件系统软件:doswindows,linux,mac,应用软件:wps3.打开cmd方式点击windosws功能键,然后左键点击windows系统,然后左键点击命令提示符。(如果要以管理员身份......
  • 利用JavaRestClient依赖使用java操作索引库
    引入依赖<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.12.1</version></depend......
  • Java高并发讲解:守护线程——在源代码中分析setDaemon()
    Java高并发讲解:守护线程——在源代码中分析setDaemon()提出问题我们都知道Java线程分为主线程和守护线程,守护线程是需要手动指定的(setDaemon(true)......