Как я могу увидеть код, который HotSpot генерирует после оптимизации?

Я хотел бы лучше понять, какие оптимизации HotSpot может генерировать для моего Java-кода во время выполнения.

Есть ли способ увидеть оптимизированный код, который использует HotSpot после некоторой работы?


person Community    schedule 11.10.2009    source источник


Ответы (2)


Вам нужно будет запустить JVM с параметрами -XX:+PrintAssembly и -XX:UnlockDiagnosticVMOptions, но PrintAssembly требует, чтобы JVM имела двоичный файл hsdis (дизассемблер HotSpot). Бинарный файл hsdis не распространяется с JVM из-за несовместимости лицензий, поэтому вам потребуется скомпилировать hsdis самостоятельно или найдите предварительно созданный двоичный файл hsdis на неофициальном веб-сайте.

Чтобы понять вывод, полезен такой инструмент, как JITWatch. Следуйте его инструкциям, чтобы записать отладочную информацию в файл журнала, который можно проанализировать в JITWatch. .

person Esko Luontola    schedule 11.10.2009
comment
Да, -XX: + PrintOptoAssembly - это ключ. - person David Crawshaw; 12.10.2009
comment
Примечание: PrintAssembly - новый флаг. PrintOptoAssembly - старый флаг, который, как мне кажется, требует отладочной сборки JVM. - person Aleksandr Dubinsky; 24.05.2015