Java开源诊断工具 Arthas 发布v3.1.0

Arthas 自2018年9月份上线以来「传送门」,已收获近万个star,感谢开发者们的认可。此次Arthas 3.1.0版本的发布,不仅带来大家投票出来的新LOGO,还带来强大的新功能和更好的易用性,下面一一介绍。
在线教程
在新版本Arthas里,增加了在线教程,用户可以在线运行Demo,一步步学习Arthas的各种用法,推荐新手尝试:
非常欢迎大家来完善这些教程。
增加内存编译器支持,在线编辑热更新代码
3.1.0版本里新增命令mc,不是方块游戏mc,而是Memory Compiler。
在之前版本里,增加了redefine命令,可以热更新字节码。但是有个不方便的地方:需要把.class文件上传到服务器上。
在3.1.0版本里,结合jad/mc/redefine 可以完美实现热更新代码。
以 Arthas在线教程 里的UserController为例:
使用jad反编译代码
jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java使用vim编译代码
当 user id 小于1时,也正常返回,不抛出异常:
@GetMapping("/user/{id}")
public User findUserById(@PathVariable Integer id) {
logger.info("id: {}" , id); if (id != null && id < 1) {
return new User(id, "name" + id);
// throw new IllegalArgumentException("id < 1");
} else {
return new User(id, "name" + id);
}
}使用
mc命令编译修改后的UserController.java$ mc /tmp/UserController.java -d /tmp
Memory compiler output:
/tmp/com/example/demo/arthas/user/UserController.class
Affect(row-cnt:1) cost in 346 ms使用
redefine命令,因为可以热更新代码$ redefine /tmp/com/example/demo/arthas/user/UserController.class
redefine success, size: 1
丝滑的自动补全
在新版本里,改进了很多命令的自动补全,比如 watch/trace/tt/monitor/stack等。
下面是watch命令的第一个Tab补全结果,用户可以很方便的一步步补全类名,函数名:
$ watch
com. sun. javax. ch. io. demo. jdk. org. java.
另外,新增加了 jad/sc/sm/redefine 等命令的自动补全支持,多按Tab有惊喜。
新版本的Web console
新版本的Web Console切换到了xtermd.js,更好地支持现代浏览器。
- 支持
Ctrl + C复制 - 支持全屏

Docker镜像支持
Arthas支持Docker镜像了
- 用户可以很方便地诊断Docker/k8s里的Java进程
- 也可以很方便地把Arthas加到自己的基础镜像里
参考: https://alibaba.github.io/arthas/docker.html
重定向重新设计
之前的版本里,Arthas的重定向是会放到一个~/logs/arthas-cache/目录里,违反直觉。
在新版本里,重定向和Linux下面的一致,>/>>的行为也和Linux下一致。
并且,增加了 cat/pwd命令,可以配置使用。
总结
总之,3.1.0版本的Arthas带了非常多的新功能,改进了很多的用户体验,欢迎大家使用反馈。
- Arthas在线教程可以学到很多技巧
- jad/mc/redefine 一条龙非常强大
- 丝滑的自动补全值得尝试
- 新版本的Web console有惊奇
Release Note: https://github.com/alibaba/arthas/releases/tag/3.1.0
本文作者:
断岭,社区ID hengyunabc,阿里巴巴技术专家,目前主要负责 Arthas 开源项目的开发和社区维护。
原文链接
更多技术干货 请关注阿里云云栖社区微信号 :yunqiinsight
Java开源诊断工具 Arthas 发布v3.1.0的更多相关文章
- 初识阿里开源诊断工具Arthas
上个月,阿里开源了一个名为Arthas的监控工具.恰逢近期自己在写多线程处理业务,由此想到了一个问题. 如果在本机开发调试,IDE可以看到当前的活动线程,例如IntelliJ IDEA,线程是运行还是 ...
- java 诊断工具——Arthas
该说不说!小编做的这些功能,最讨厌的就是优化!某些前辈大佬写的代码小辈我实在不敢恭维!那逻辑!那sql! 接下来!今天的主角就登场了,阿里巴巴最近开源出来的一个针对 java 的工具,主要是针对 ja ...
- Java诊断工具Arthas
Java诊断工具Arthas 1. Arthas简介 Arthas是阿里开源的一个线上java诊断工具,发现阿里还是挺喜欢开源一些技术的,造福人类.昨天试用了一下,发现真是强大,解决了我工作两年的很多 ...
- 开源在线分析诊断工具Arthas(阿尔萨斯)--总结
阿里重磅开源在线分析诊断工具Arthas(阿尔萨斯) arthas用法 启动demo java -jar arthas-demo.jar 启动 java -jar arthas-boot.jar at ...
- Alibaba Java诊断工具Arthas之快速安装和简单使用
Alibaba Java诊断工具Arthas简单介绍 : 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception ...
- 【Java】15分钟快速体验阿里Java诊断工具Arthas
[墙裂推荐]15分钟快速体验阿里Java诊断工具Arthas : https://alibaba.github.io/arthas/arthas-tutorials?language=cn&i ...
- 款阿里开源的 Java 诊断工具Arthas
Arthas是什么鬼? Arthas是一款阿里巴巴开源的 Java 线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题. Arthas诊断使用的是命令行交互模式,支持JDK6+,Linux. ...
- 阿里重磅开源在线分析诊断工具Arthas(阿尔萨斯)
github地址: Arthas English version goes here. Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Art ...
- 阿里JAVA诊断工具Arthas的初步使用
Arthas 是Alibaba开源的Java诊断工具,主要解决以下问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 comm ...
随机推荐
- C++ SOCKET 基础编程
{ http://c.biancheng.net/socket/ }
- sudo: /etc/sudoers is world writable|给用户添加权限报错
给用户添加权限时候出现:sudo: /etc/sudoers is world writable| sudo: /etc/sudoers is world writable解决方式: pkexec c ...
- PHP面向对象魔术方法之__call函数
l 基本介绍: (1) 当我们调了一个不可以访问的成员方法时,__call魔术方法就会被调用. (2) 不可以访问的成员方法的是指(1. 该成员方法不存在, 2. 成员方法是protected或者 p ...
- Web-动态页面
<!doctype html>01 - JavaEE- JSP - EL&JSTL figure:first-child { margin-top: -20px; } #write ...
- Spring 声明式事务管理(11)
案例分析 本案例是图书管理系统精简部分,在数据库中有3张表.分别保存图书库存.图书信息和用户信息.下面是建表SQL语句 1 DROP TABLE IF EXISTS store; 2 DROP TAB ...
- vue表格之tableHeaderColor(修改表头背景色)
<el-table :header-cell-style="tableHeaderColor"></el-table> // 更改表头样式 tableHea ...
- 13-5-let和()的作用域
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python对象和类
Python 里的所有数据都是以对象形式存在的,对象是类的实例. 定义类(class) 使用class来定义一个类. 比如,定义一个cat类,如下: class Cat(): def __init__ ...
- UMP系统功能 资源隔离
- JS规则 我或你都可以 (逻辑或操作符)||逻辑或操作符,相当于生活中的“或者”,当两个条件中有任一个条件满足,“逻辑或”的运算结果就为“真”
我或你都可以 (逻辑或操作符) "||"逻辑或操作符,相当于生活中的"或者",当两个条件中有任一个条件满足,"逻辑或"的运算结果就为&quo ...