Java 诊断工具 arthas-boot 安装步骤及常用命令

arthas 是 Alibaba 开源的 Java 诊断工具,它的特点是使用方便,功能强大。最重要的是,arthas可以监察生产环境下的项目,使用的过程无需重启项目。

官方文档:https://alibaba.github.io/arthas

在这里插入图片描述

一、安装

第1步, 下载 arthas-boot.jar 文件:https://arthas.aliyun.com/arthas-boot.jar

第2步, 为了测试运行,在本地系统运行一个Java程序,比如在 IDEA 中写一个死循环并运行:

在这里插入图片描述

第3步, 打开cmd,进入arthas-boot.jar所在目录,执行命令

java -jar arthas-boot.jar

在这里插入图片描述

随后选择需要挂载的 Java 程序,这里我们要监控的是 Test3 这个类,所以在控制台输入1并回车。

在这里插入图片描述

等到出现以下 arthas 的图案,就说明运行成功了。

在这里插入图片描述

二、常用命令

2.1 dashboard 命令

可以直观的看到当前Java程序的线程CPU情况和状态,以及内存占用最多的对象信息

在这里插入图片描述

2.2 thread 命令

列出当前Java程序中的所有线程的信息。

thread

在这里插入图片描述

列出死锁线程的信息:

thread -b

在这里插入图片描述

2.3 jvm 命令

列出虚拟机相关信息,例如GC算法类型

[arthas@14500]$ jvm
...
...
----------------------------------------------------------------------------COMPILATION
----------------------------------------------------------------------------NAME                              HotSpot 64-Bit Tiered CompilersTOTAL-COMPILE-TIME                1306[time (ms)]----------------------------------------------------------------------------GARBAGE-COLLECTORS	# 当前JVM使用了什么垃圾回收器
----------------------------------------------------------------------------PS Scavenge                       name : PS Scavenge[count/time (ms)]                 collectionCount : 12collectionTime : 101PS MarkSweep                      name : PS MarkSweep[count/time (ms)]                 collectionCount : 3collectionTime : 306

2.4 jad 命令

它是一个在线反编译指令。

反编译在某些情况下还是有用的,比如当团队编写的代码无误,但是项目上线后却发现代码输出错误,那么这时候就可以使用jad在线反编译某个文件,查看它最终的代码,从而定位问题所在。

在这里插入图片描述

2.5 redefine(在线修改class)

它支持在线重新加载某个class文件,这样就避免了需要项目重启带来的风险!

在生产环境中,不可以随意停止程序。当生产环境出现了某些低级错误(比如某个变量名字写错成其他变量,或数值由0改成了1)时,可以通过redefine 命令来在线修改class文件,从而临时解决掉这个低级错误。但这种解决方式是在内存层面上修改了class文件,等到项目重新启动时就会丢失更新。

因此,等到下次部署项目前,再在原项目中修改掉这个bug即可。

2.6 trace 命令

trace 包名 方法名

作用是:在方法调用链中,追踪某个方法A的运行时长。

它会显示方法A的调用情况,比如显示调用了方法B——耗时10ms,调用了方法C——耗时2000ms,在这个例子中,方法C很可能就是有问题的方法,因为它的调用时间太长了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/61364.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB 备份与恢复

1.1 MongoDB的常用命令 mongoexport / mongoimport mongodump / mongorestore 有以上两组命令在备份与恢复中进行使用。 1.1.1 导出工具mongoexport Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项&#xff0c…

DOCKER的容器

1. 什么是Container(容器) 要有Container首先要有Image,也就是说Container是通过image创建的。 Container是在原先的Image之上新加的一层,称作Container layer,这一层是可读可写的(Image是只读的&#xff0…

多货币多汇率跨境电子商城建设(仓储管理、网络安全)

多货币多汇率跨境电子商城建设需要考虑到多个方面,包括仓储管理、网络安全、货币兑换、物流配送等。以下是具体的介绍: 一、仓储管理 仓储管理是跨境电子商城的重要组成部分,需要考虑到商品的存储、管理和分拣等环节。以下是需要注意的几个…

Zookeeper 面试题

一、ZooKeeper 基础题 1.1、Zookeeper 的典型应用场景 Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布和订阅。 通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watcher 事件通知机…

分享21年电赛F题-智能送药小车-做题记录以及经验分享

这里写目录标题 前言一、赛题分析1、车型选择2、巡线1、OpenMv循迹2、灰度循迹 3、装载药品4、识别数字5、LED指示6、双车通信7、转向方案1、开环转向2、位置环速度环闭环串级转向3、MPU6050转向 二、调试经验分享1、循迹2、识别数字3、转向4、双车通信5、逻辑处理6、心态问题 …

图的遍历之 深度优先搜索和广度优先搜索

深度优先搜索的图文介绍 1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各…

mysql获取第一个逗号前面的字符串

字符串内容如下: 统编版(2019),必修下册,第五单元 ,第10课,10-2 在马克思墓前的讲话 /恩格斯, 想获取,第一个逗号前面的字符串,即:统编版(2019) 需要第一获取逗号的下标位置&…

解决: git拉取报错 git 未能顺利结束 (退出码 1)

拉取代码失败信息 解决方法: 执行一下"git push -f origin master"命令即可 步骤: 1.项目文件夹右击选择"Git Bash Here",打开命令窗口 2. 输入"git push -f origin master"后,回画 执行结束 3.再拉取代码,成功

phpstorm添加vue 标签属性绑定提示和提示vue的方法提示

v-text v-html v-once v-if v-show v-else v-for v-on v-bind v-model v-ref v-el v-pre v-cloak v-on:click v-on:keyup.enter v-on:keyup click change input number debounce transition :is :class把上面这些文字粘贴到点击右下角放大按钮 后的文本框里,然后保存…

Bigemap如何添加高清在线地图?

地图配置文件下载链接:https://pan.baidu.com/s/15aDbId92DoLALqMpjBQB4A 提取码:1008 –来自百度网盘超级会员V3的分享

【Java并发】如何进行死锁诊断?

文章目录 1.什么是死锁2.死锁怎么产生的3.如何进行死锁诊断?3.1 通过命令查看3.2 jconsole可视化工具3.2 VisualVM:故障处理工具 1.什么是死锁 死锁(Deadlock)是指两个或多个进程(线程)在执行过程中&#…

linux配置上网 linux adsl拨号上网设置

Linux里面配置ADSL上网是件很麻烦的事。但配置完成之后就能开机自动拨号上网,可谓十分的方便。支持的系统有Redhat,CentOS,SuSE,FreeBSD,Ubuntu等常见的Linux。 工具/原料 ADSL网络,电信,网通,移动等常见宽带。 Linux系统的安装光…