Arthas 基础命令实战

一 点睛

quit/exit 退出当前 Arthas客户端,其他 Arthas喜户端不受影响

stop/shutdown 关闭 Arthas服务端,所有 Arthas客户端全部退出

help 查看命令帮助信息

cat 打印文件内容,和l inux 里的 cat 命令类似

echo 打印参数,和 linux 里的 echo 命令类似

grep 匹配查找,和 linux 里的 grep 命令类似

tee 复制标隹输入到标准输出和指定的文件,和 linux 里的 tee 命令类似

pwd 返回当前的工作目录,和 linux 命令类似

cls 清空当前屏幕区域

session 查看当前会话的信息

reset 重置增强类,将被 Arthas 增强过的类全部还原, Arthas 服务端关闭时会重置所有增强过的类

version 输出当前目标 Java 进程所加载的 Arthas 版本号

history 打印命令历史

keymap Arthas 快捷键列表及自定义快捷键

二 代码

package chapter03;

import java.util.ArrayList;
import java.util.concurrent.TimeUnit;

public class JProfilerTest {
    public static void main(String[] args) {
        while (true){
            ArrayList list = new ArrayList();
            for (int i = 0; i < 500; i++) {
                Data data = new Data();
                list.add(data);
            }
            try {
                TimeUnit.MILLISECONDS.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

class Data{
    private int size = 10;
    private byte[] buffer = new byte[1024*1024]; // 1 mb
    private String info = "hello,China";
}

三 windows下进入命令界面

D:\ProgramFiles\arthas-packaging-3.5.4-bin>jps
10656 Jps
12736 Launcher
2864
10668 JProfilerTest

D:\ProgramFiles\arthas-packaging-3.5.4-bin>as.bat 10668
环境变量 JAVA_TOOL_OPTIONS 没有定义
JAVA_HOME: D:\ProgramFiles\Java\jdk1.8.0_251
telnet port: 3658
http port: 8563
信息: 用提供的模式无法找到文件。
telnet wasn't found, please google how to install telnet under windows.
Try to visit http://127.0.0.1:8563 to connecto arthas server.

四 实战

  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
/  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'

wiki       https://arthas.aliyun.com/doc
tutorials  https://arthas.aliyun.com/doc/arthas-tutorials.html
version    3.5.4
main_class
pid        10668
time       2021-09-04 08:53:08

# 帮助命令
[arthas@10668]$ help
NAME         DESCRIPTION
help         Display Arthas Help
auth         Authenticates the current session
keymap       Display all the available keymap for the specified connection.
sc           Search all the classes loaded by JVM
sm           Search the method of classes loaded by JVM
classloader  Show classloader info
jad          Decompile class
getstatic    Show the static field of a class
monitor      Monitor method execution statistics, e.g. total/success/failure count, average rt, fail rate, etc.
stack        Display the stack trace for the specified class and method
thread       Display thread info, thread stack
trace        Trace the execution time of specified method invocation.
watch        Display the input/output parameter, return object, and thrown exception of specified method invocation
tt           Time Tunnel
jvm          Display the target JVM information
perfcounter  Display the perf counter information.
ognl         Execute ognl expression.
mc           Memory compiler, compiles java files into bytecode and class files in memory.
redefine     Redefine classes. @see Instrumentation#redefineClasses(ClassDefinition...)
retransform  Retransform classes. @see Instrumentation#retransformClasses(Class...)
dashboard    Overview of target jvm's thread, memory, gc, vm, tomcat info.
dump         Dump class byte array from JVM
heapdump     Heap dump
options      View and change various Arthas options
cls          Clear the screen
reset        Reset all the enhanced classes
version      Display Arthas version
session      Display current session information
sysprop      Display, and change the system properties.
sysenv       Display the system env.
vmoption     Display, and update the vm diagnostic options.
logger       Print logger info, and update the logger level
history      Display command history
cat          Concatenate and print files
base64       Encode and decode using Base64 representation
echo         write arguments to the standard output
pwd          Return working directory name
mbean        Display the mbean information
grep         grep command for pipes.
tee          tee command for pipes.
profiler     Async Profiler. https://github.com/jvm-profiling-tools/async-profiler
vmtool       jvm tool
stop         Stop/Shutdown Arthas server and exit the console.

# 具体某个命令的帮助
[arthas@10668]$ reset -h
USAGE:
   reset [-h] [-E] [class-pattern]

SUMMARY:
   Reset all the enhanced classes

EXAMPLES:
   reset
   reset *List
   reset -E .*List

OPTIONS:
-h, --help                                       this help
-E, --regex                                      Enable regular expression to match (wildcard matching by default)
<class-pattern>                                  Path and classname of Pattern Matching

# cat命令
[arthas@10668]$ cat E:/JVMDemo3/src/chapter03/Stack.java
package chapter03;

import java.util.Arrays;
import java.util.EmptyStackException;

public class Stack {
    private Object[] elements;
    private int size = 0;
    private static final int DEFAULT_INITIAL_CAPACITY = 16;

    public Stack() {
        elements = new Object[DEFAULT_INITIAL_CAPACITY];
    }

    public void push(Object e) { // 入栈
        ensureCapacity();
        elements[size++] = e;
    }

    // 隐式内存泄露代码
    public Object pop() { // 出栈
        if (size == 0)
            throw new EmptyStackException();
        return elements[--size];
    }

    private void ensureCapacity() {
        if (elements.length == size)
            elements = Arrays.copyOf(elements, 2 * size + 1);
    }
}

# pwd 命令
[arthas@10668]$ pwd
E:\JVMDemo3

# cls 清屏
[arthas@10668]$ cls

# session 会话
[arthas@10668]$ session
Name        Value
--------------------------------------------------
JAVA_PID    10668
SESSION_ID  5b10ecf4-c0f3-4453-8fbd-42a5c0337e8e

# version 版本号
[arthas@10668]$ version
3.5.4

# history 查看历史命令
[arthas@10668]$ history
    1  help
    2  dashboard -n 2
    3  help
    4  reset -h
    5  pwd
    6  ll
    7  ls
    8  dir
    9  cd src
   10  cat E:\JVMDemo3\src\chapter03\Stack.java
   11  cat E:/JVMDemo3/src/chapter03/Stack.java
   12  pwd
   13  cls
   14  session
   15  version
   16  history

# stop 关闭服务端和所有客户端
[arthas@10668]$ stop
Resetting all enhanced classes ...
Affect(class count: 0 , method count: 0) cost in 2 ms, listenerId: 0
Arthas Server is going to shutdown...
[arthas@10668]$ session (5b10ecf4-c0f3-4453-8fbd-42a5c0337e8e) is closed because server is going to shutdown.

上一篇:arthas简单使用


下一篇:Arthas从入门到精通(一) 整体概览