OpenJDK11下如何在运行时设置JFR栈深度?
OpenJDK 11 中调整JFR栈深度的有效方法
问题原因
OpenJDK 11 里,jcmd <pid> JFR.configure stackdepth=128命令无法生效的核心原因是:栈深度是JFR录制会话的初始化参数,而非全局可动态调整的配置。JFR子系统在JVM启动或第一次启动录制时就完成初始化,后续执行JFR.configure修改栈深度,不会对已存在或新启动的录制会话产生影响。
有效解决方案
1. JVM启动时全局指定栈深度
在启动应用时,通过-XX:FlightRecorderOptions参数直接设置栈深度,所有录制会话都会默认使用这个配置:
java -XX:FlightRecorderOptions=stackdepth=128 -jar your-application.jar
2. 启动录制会话时显式指定
如果不想修改JVM启动参数,在启动单个录制会话时,直接在JFR.start命令中添加stackdepth参数:
jcmd <pid> JFR.start name=CustomRecording stackdepth=128 filename=my-recording.jfr
内容的提问来源于stack exchange,提问作者Olivier Masseau
相关产品推荐
相关产品推荐

