有关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:常用命令详解!的更多相关文章

  1. 线上诊断神器-arthas基本应用

    Arthas基本应用 一.Arthas作用 什么是Arthas呢? ​ Arthas 是一款阿里推出的线上监控诊断产品,通过全局视角实时查看应用 load.内存.gc.线程的状态信息,并能在不修改应用 ...

  2. Linux常用命令详解上

    Linux常用命令详解上 目录 一.shell 二.Linux命令 2.1.内部命令与外部命令的区别 2.2.Linux命令行的格式 2.3.编辑Linux命令行的辅助操作 2.4.获得命令帮助的方法 ...

  3. hbase shell基础和常用命令详解(转)

    HBase shell的基本用法 hbase提供了一个shell的终端给用户交互.使用命令hbase shell进入命令界面.通过执行 help可以看到命令的帮助信息. 以网上的一个学生成绩表的例子来 ...

  4. samtools常用命令详解(转)

    转自:samtools常用命令详解 samtools的说明文档:http://samtools.sourceforge.net/samtools.shtml samtools是一个用于操作sam和ba ...

  5. cisco常用命令详解

    cisco常用命令详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用命令用法展示 1.命令行模式的来回切换 yinzhengjie>enable #从用户模式切换到 ...

  6. hbase shell基础和常用命令详解

    HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服 ...

  7. Tmux 的常用命令详解

    Tmux 的常用命令详解  常用命令: tmux #开启tmux tmux ls #显示已有tmux列表(C-b s) tmux attach-session -t 数字 #选择tmux C-b c ...

  8. 【转载】windbg 常用命令详解

    windbg 常用命令详解 https://blog.csdn.net/chenyujing1234/article/details/7743460 vertarget 显示当前进程的大致信息 lmv ...

  9. DOS常用命令详解

    DOS常用命令详解 dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 del 删除文件 format 格式化磁盘 edit ...

  10. Kubernetes,kubectl常用命令详解

    kubectl概述 祭出一张图,转载至 kubernetes-handbook/kubectl命令概述 ,可以对命令族有个整体的概念. 环境准备 允许master节点部署pod,使用命令如下: kub ...

随机推荐

  1. 从零开始教你手动搭建幻兽帕鲁私服( CentOS 版)

    哈喽大家好,我是咸鱼. 想必上网冲浪的小伙伴最近都被<幻兽帕鲁>这款游戏刷屏了. (文中图片均来自网络,侵删) 幻兽帕鲁是 Pocketpair 打造的一款开放世界的生存建造游戏.在游戏中 ...

  2. C++遴选出特定类型的文件或文件名符合要求的文件

      本文介绍基于C++语言,遍历文件夹中的全部文件,并从中获取指定类型的文件的方法.   首先,我们来明确一下本文所需实现的需求.现在有一个文件夹,其中包含了很多文件,如下图所示:我们如果想获取其中所 ...

  3. MySQL 联合索引、复合索引

    复合索引也叫联合索引,经常使用,遇到问题,可以看下 这3篇文章: 1. https://www.jb51.net/article/229580.htm 2. https://blog.csdn.net ...

  4. 《ASP.ENT Core 与 RESTful API 开发实战》-- (第5章)-- 读书笔记(中)

    第 5 章 使用 Entity Framework Core 5.3 重构仓储类 创建一个通用仓储接口 namespace Library.API.Services { public interfac ...

  5. MySQL查询语句的执行顺序

    一.编写查询SQL顺序 1.select 2.from 3.join on 4.where 5.group by 6.having 7.order by 8.limit 二.MySQL执行顺序 1.f ...

  6. 2023年多校联训NOIP层测试5

    2023年多校联训NOIP层测试5 T1 糖果 \(10pts\) 首先考虑一些异或的性质: 归零率:\(a \bigoplus a=0\) 恒等律:\(a \bigoplus 0=a\) 交换律:\ ...

  7. The Missing Semester - 第五讲 学习笔记

    第五讲 命令行环境 课程视频地址:https://www.bilibili.com/video/BV1Dy4y1a7BW 课程讲义地址:https://missing-semester-cn.gith ...

  8. AsyncHttpClient And Download Speed Limit

    AsyncHttpClient Official repository and docs: https://github.com/AsyncHttpClient/async-http-client M ...

  9. win32改变静态控件的文本大小

    HWND static_ = CreateWindow(L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 100, 100, 10 ...

  10. win32- 使用WM_NCPAINT在非客户区域绘制边框

    #pragma comment(lib, "UxTheme") #include <windows.h> #include <uxtheme.h> LRES ...