Профилировщик кода Java Mission Control пуст

У меня проблема с использованием Java Mission Control, когда профилируемое приложение устанавливает системное свойство XX:MaxJavaStackTraceDepth равным -1.

Воспроизвести:

  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

Изменить: Исходный вопрос ошибочно возложить вину на системное свойство java.endorsed.dirs. У меня была куча свойств и, должно быть, я запутался в процессе исключения.

1 ответ

Решение

Я смог воспроизвести проблему с -XX:MaxJavaStackTraceDepth=-1 и нашел по крайней мере одну связанную ошибку - https://bugs.openjdk.java.net/browse/JDK-7179701, которая является ошибкой с низким приоритетом в настоящее время предназначен для JDK 10.... Мой совет будет использовать вместо -XX:FlightRecorderOptions=stackdepth=2048. Я не могу сказать, что много экспериментировал с этой опцией, но по крайней мере она предназначена для работы с JFR.

Другие вопросы по тегам