3

当正在分析的应用程序将 XX:MaxJavaStackTraceDepth 系统属性设置为 -1 时,我在使用 Java Mission Control 时遇到问题。

重现:

  1. 启动一个java应用程序:java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:MaxJavaStackTraceDepth=-1
  2. 使用默认设置为该应用程序制作飞行记录
  3. 查看生成记录中的“代码”部分。它会是空的,像这样:http: //imgur.com/if27cUu

系统:Ubuntu 14.04/amd64。Java 1.8.0_72。

关于为什么会发生这种情况的任何建议?我想保持我的堆栈跟踪不受限制(由于一些罕见的堆栈溢出异常,除非你有堆栈跟踪的开头,否则很难找到)。

-1 值来自这里:http ://stas-blogspot.blogspot.se/2011/07/most-complete-list-of-xx-options-for.html#MaxJavaStackTraceDepth

编辑: 最初的问题错误地将责任归咎于 java.endorsed.dirs 系统属性。我有一堆属性集,在消除过程中一定很困惑。

4

1 回答 1

3

我已经能够使用 -XX:MaxJavaStackTraceDepth=-1 重现该问题,并发现至少一个相关的错误 - https://bugs.openjdk.java.net/browse/JDK-7179701,这是一个低优先级错误目前针对 JDK 10.... 我的建议是改用 -XX:FlightRecorderOptions=stackdepth=2048。我也不能说我已经对这个选项做了很多试验,但至少它是为与 JFR 一起工作而设计的。

于 2016-02-01T11:53:15.783 回答