Arthas 基础教程
Arthas 基础教程
Arthas官网地址[https://arthas.aliyun.com/]
启动math-game
下载math-game.jar,再用java -jar命令启动:
wget https://arthas.aliyun.com/math-game.jar java -jar math-game.jar
math-game是一个很简单的程序,它随机生成整数,再执行因式分解,把结果打印出来。如果生成的随机数是负数,则会打印提示信息。
启动arthas-boot
在新的Terminal 2里,下载arthas-boot.jar,再用java -jar命令启动:
wget https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar
arthas-boot是Arthas的启动程序,它启动后,会列出所有的Java进程,用户可以选择需要诊断的目标进程。
选择第一个进程,输入 1 ,再Enter/回车:
Attach成功之后,会打印Arthas LOGO。输入 help 可以获取到更多的帮助信息。
Dashboard
dashboard 命令可以查看当前系统的实时数据面板。
输入 Q 或者 Ctrl+C 可以退出dashboard命令。
Thread
thread 1 命令会打印线程ID 1的栈。
Arthas支持管道,可以用 thread 1 | grep 'main(' 查找到main class。
可以看到main class是demo.MathGame:
$ thread 1 | grep 'main('
at demo.MathGame.main(MathGame.java:17)
Sc
可以通过 sc 命令来查找JVM里已加载的类:
sc -d *MathGame
Jad
可以通过 jad 命令来反编译代码:
jad demo.MathGame
Watch
通过watch命令可以查看函数的参数/返回值/异常信息。
watch demo.MathGame primeFactors returnObj
输入 Q 或者 Ctrl+C 退出watch命令。
Vmtool
通过vmtool命令,可以搜索内存对象。
vmtool --action getInstances --className java.lang.String --limit 10
bash $ vmtool --action getInstances --className java.lang.String --limit 10 @String[][ @String[com/taobao/arthas/core/shell/session/Session], @String[com.taobao.arthas.core.shell.session.Session], @String[com/taobao/arthas/core/shell/session/Session], @String[com/taobao/arthas/core/shell/session/Session], @String[com/taobao/arthas/core/shell/session/Session.class], @String[com/taobao/arthas/core/shell/session/Session.class], @String[com/taobao/arthas/core/shell/session/Session.class], @String[com/], @String[java/util/concurrent/ConcurrentHashMap$ValueIterator], @String[java/util/concurrent/locks/LockSupport], ]
Exit/Stop
退出Arthas
用 exit 或者 quit 命令可以退出Arthas。
退出Arthas之后,还可以再次用 java -jar arthas-boot.jar 来连接。
彻底退出Arthas
exit/quit命令只是退出当前session,arthas server还在目标进程中运行。
想完全退出Arthas,可以执行 stop 命令。

浙公网安备 33010602011771号