Я хотел бы лучше понять, какие оптимизации HotSpot может генерировать для моего Java-кода во время выполнения.
Есть ли способ увидеть оптимизированный код, который использует HotSpot после некоторой работы?
Я хотел бы лучше понять, какие оптимизации HotSpot может генерировать для моего Java-кода во время выполнения.
Есть ли способ увидеть оптимизированный код, который использует HotSpot после некоторой работы?
Вам нужно будет запустить JVM с параметрами -XX:+PrintAssembly
и -XX:UnlockDiagnosticVMOptions
, но PrintAssembly требует, чтобы JVM имела двоичный файл hsdis (дизассемблер HotSpot). Бинарный файл hsdis не распространяется с JVM из-за несовместимости лицензий, поэтому вам потребуется скомпилировать hsdis самостоятельно или найдите предварительно созданный двоичный файл hsdis на неофициальном веб-сайте.
Чтобы понять вывод, полезен такой инструмент, как JITWatch. Следуйте его инструкциям, чтобы записать отладочную информацию в файл журнала, который можно проанализировать в JITWatch. .
PrintAssembly
- новый флаг. PrintOptoAssembly
- старый флаг, который, как мне кажется, требует отладочной сборки JVM.
- person Aleksandr Dubinsky; 24.05.2015
http://mail.openjdk.java.net/pipermail/hotspot-dev/2009-FebFebruary/001255.html