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-only
Solo 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