[alibaba/arthas]stack命令, 如果判断当前jdk的版本大于9时可以使用StackWalker API

2024-08-05 658 views
1
环境信息
  • arthas-boot.jar 或者 as.sh 的版本: 3.6.6
  • Arthas 版本: 3.6.6
  • 操作系统版本: 20.04.1-Ubuntu
  • 目标进程的JVM版本: java 17.0.4 2022-07-19 LTS
  • 执行arthas-boot的版本: 3.6.6
期望的结果

当判断jdk版本大于9时可以使用StackWalker API去获取栈程栈信息,而不是通过抛异常的方式去获取线程栈,这样效率相对较高. 参见 https://github.com/spring-projects/spring-boot/issues/31665

回答

7

这个改起来可能有点麻烦,目前arthas是用jdk 8编译的。

可能需要一个单独的工具类,先编译好。或者要研究下怎么支持打包 Multi-Release Jar。