jstack encuentra la información de la pila de subprocesos que ocupa la CPU más alta
package com.example.demo;
public class Math {
public static final int initData = 666;
public int compute() {
//
int a = 1;
int b = 2;
int c = (a + b) * 10;
return c;
}
public static void main(String[] args) {
Math math = new Math();
while (true) {
math.compute();
}
}
}
1. Use el comando superior o el número de proceso top -p para especificar el estado de la memoria de su proceso java, y pid es su número de proceso java, como 19663
2. Presione H para obtener el estado de la memoria de cada hilo
3. Busque el hilo tid con el mayor uso de memoria y CPU, como 19664
4. Convierta a hexadecimal para obtener 0x4cd0, que es la representación hexadecimal de la identificación del subproceso
5. Ejecute jstack 19663|grep -A 10 4cd0 y obtenga las últimas 10 líneas del subproceso 4cd0 en la información de la pila de subprocesos. Desde la pila, puede encontrar el método de llamada que hace que la CPU se dispare.
6. Verifique la información de la pila correspondiente para averiguar el código que puede tener problemas