centos7 1核2GBjava
Java8web
模擬代碼以下spring
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication public class JvmLearnApplication { public static void main(String[] args) { SpringApplication.run(JvmLearnApplication.class, args); } @GetMapping("cpu") public void cpu() { while (true) { } } }
在項目根目錄下執行以下命令:centos
mvn clean package -Dmaven.test.skip=true
nohup java -jar jvm-learn-0.0.1-SNAPSHOT.jar &
curl localhost:8080/cpu
top
以下圖:可看出PID爲7149的java進程佔用cpu最高,達到了98%springboot
top -p 7149 -H
以下圖:可看出PID爲7166的線程佔用cpu最高,達到了97.7%app
printf "%x \n" 7166
jstack 7149 | grep 1bfe -A 30
以下圖:可看出是JVMLearnApplication類的第18行出現問題curl