Explicación detallada del uso de arthas

Escribí un artículo sobre cómo eliminar la alta tasa de uso de la CPU del servidor Linux causada por el programa java - blog de leonnew - blog de CSDN

En él se menciona el uso simple del programa arthas. Hablemos de algunas características especiales en detalle hoy.

Ejecute una demostración: wget https://arthas.aliyun.com/math-game.jar

java -jar juego-matematicas.jar

Cómo obtener arthas: wget https://arthas.aliyun.com/arthas-boot.jar

Cómo empezar: java -jar arthas-boot.jar

arthas-boot es el lanzador de  Arthas. Enumera todos los procesos de Java y el usuario puede seleccionar el proceso de destino para ser diagnosticado.

Seleccione el primer proceso, escriba  1 y luego escriba  Enter:

Después de que Adjuntar sea exitoso, se imprime el LOGOTIPO de Arthas. Entra  help para más ayuda.

Panel

1、El  dashboard comando le permite ver el panel de datos en tiempo real del sistema actual.

Hilo

2、El  thread 1 comando imprime la pila de subproceso ID 1.

Arthas admite tuberías y puede encontrar  main class con  thread 1 | grep 'main('.

Puedes ver que  main class es  demo.MathGame:

Imprima la pila de subprocesos, puede ver que la clase principal es demo.MathGame

$ thread 1 | grep 'main('
    at demo.MathGame.main(MathGame.java:17)

Carolina del Sur

3、El  sc comando se puede usar para encontrar las clases cargadas en la JVM:

sc -d *MathGame

Se utiliza para consultar la clase cargada por jvm.

Jad

4、El  jad comando se puede usar para descompilar el código de bytes:

jad demo.MathGame

用来反编译代码,可以看到MathGame的main类的代码内容

--source-onlySolo puede imprimir el código fuente descompilado a través de parámetros

jad --source-only com.example.demo.arthas.user.UserController

 Mirar

El  watch comando puede ver el parámetro/valor de retorno/excepción del método.

watch demo.MathGame primeFactors returnObj

Puede ver el parámetro/valor de retorno/información de excepción de la función.

 Vmtool

El  vmtool comando puede buscar objetos en JVM.

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], ]

Puede ver el mecanismo de ejecución de la máquina virtual jvm

 Se puede salir de Arthas con el  comando exit o  quit .

salir y salir puede salir de arthas

Supongo que te gusta

Origin blog.csdn.net/leonnew/article/details/123663080
Recomendado
Clasificación