提问人:Arun Pal 提问时间:11/6/2023 最后编辑:Arun Pal 更新时间:11/9/2023 访问量:108
JVM 选项 --XX MaxJavaStackTraceDepth 当我将任何值减小到 10 以下时,它不起作用
JVM option --XX MaxJavaStackTraceDepth when I decrease any value below 10, It is not working
问:
我正在尝试设置 jvm 选项 maxJavaStackTraceDepth。因此,当我将 JVM 选项 --XX MaxJavaStackTraceDepth 增加到 10 以上时。它按预期工作。但是当我将任何值减小到 10 以下时,它会导致 NoClassDefFoundError 错误。
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.apache.logging.log4j.message.ReusableMessageFactory
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2108)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2015)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1886)
at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:849)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:130)
理想情况下,它也应该在 10 个值以下工作 like -XX:MaxJavaStackTraceDepth=5 我正在使用 Java 17
答:
0赞
Arun Pal
11/9/2023
#1
我对此进行了研究。我有以下观察。
当我们将 jvm 选项 MaxJavaStackTraceDepth 降低到某个阈值(例如 10)以下时,它可能无法按预期工作,因为它会影响 JVM 在抛出异常时提供有意义的堆栈跟踪的能力。
堆栈跟踪对于诊断和调试 Java 应用程序中的问题至关重要,因为它们提供有关导致异常或错误的方法调用序列的信息。当 MaxJavaStackTraceDepth 设置得太低时,JVM 可能无法在堆栈跟踪中捕获足够的信息来了解问题的上下文。
通常不建议将 MaxJavaStackTraceDepth 设置为非常低的值,尤其是低于 10。
评论
StackWalker