используя опцию -XX: + PrintCFGToFile jvm, где генерируется файл output.cfg? - PullRequest
1 голос
/ 13 февраля 2012

Я установил fastdebug build JDK 6 и выполнил эту команду:

java -XX:+PrintCFGToFile Test

, но файл с печатной информацией не найден ... Я попробовал егов операционных системах Linux и Windows, но безуспешно.После отказа я собрал JDK из исходников ( OpenJDK 7 sources , Ubuntu), но безуспешно, опять же, он печатает "VM option '+PrintCFGToFile'", но ни один файл не создан ни в каталоге с выполненным классом, ни в JDK binкаталог ... Я искал "output.cfg" в файловой системе, ничего не нашел ... Я проверил источники, и кажется, что файл действительно имеет имя "output.cfg" (если я не ошибаюсь, это CFGPrinter)

Что не так?Нужно ли указывать какую-либо дополнительную опцию?Как и где получить этот файл с информацией о графике потока управления?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Что ж, большое спасибо списку рассылки OpenJDK, особенно Krystal Mok, который не ответил на мой вопрос, и не оставил этот вопрос без ответа, а также поделился им с сообществом:

В HotSpot есть два JIT:
1) C1 ака клиент JIT
2) C2 ака сервер JIT
поскольку я использовал Ubuntu, HotSpot использовал компилятор C2, а PrintCFGToFile применяется только к C1.

Возможно, вы захотите включить -XX: + TieredCompilation, если вы действительно хотите, чтобы этот флаг работал, на вашей текущей платформе

был совет, поэтому решение:

java -XX:+PrintCFGToFile -XX:+TieredCompilation Test

запустив его, я получаю файл output.cfg в папке с выполненным классом (как и ожидалось)

оригинальный ответ (и тема)

0 голосов
/ 27 марта 2012

Насчет С1 / С2 прав. А также только метод, скомпилированный JIT , может выдать CFG , опция -XX:+PrintCompilation может сообщить, какой метод скомпилирован.

...