?

Log in

No account? Create an account

elizarov


Блог Романа Елизарова


Previous Entry Share Next Entry
Смотрим на ассемблерный код Java приложения в современном HotSpot-е
elizarov

Я уже писал об универсальном способе просмотра ассемблерного кода Java приложения, что бывает очень полезно при оптимизации производительности. К счастью, в современных версиях HotSpot JVM есть встроенная возможность вывода ассемблерного кода -XX:+PrintAssembly, которая включена даже в production сборку. То есть, можно скачать JDK прямо с сайта и... всё почти заработает, за исключением того, что собственно библиотека дизассемблирования в поставку JDK не входит.

Официальные источники предлагают собрать библиотеку из исходников самим, либо загрузить base-hdis с проекта Kenai, где выложены бинарники под unix-овые операционные системы. К счастью, есть добрая душа, которая выложила hsdis-i386.dll для 32-bit Windows систем здесь, для тех, кому нужно посмотреть на ассемблерный код на типичной desktop машине среднестатистического пользователя.

Собственно, доставание бинарника с дизассемблером и есть самая сложная часть. Дальше, положив его туда, откуда грузит библиотеки ваша JVM, всё становиться очень просто. Я использую вот такую комбинацию ключей при старте JVM:

-XX:+UnlockDiagnosticVMOptions -XX:CompileCommand=print,*<classname>.<methodname> -XX:PrintAssemblyOptions=intel

Где в качестве <classname> и <methodname> указываю имя класса и метода, соответственно, ассемблерный код которого меня интересует в настоящий момент. На x86 архитектуре особо приятно иметь возможность видеть вывод в формате принятым Intel-ом.


  • 1
Ну еще вещественная арифметика еще не на высоте в Java. Даже без векторных операций и SSE на Java можно проиграть в разы из-за отсутствия доступа ко многим вещественным функциям реализованным аппаратно в процессоре.

1. нативные вставки помогают решить эту проблему?
2. Ты не знаешь, работы по улучшению ситуации с вещественной арифметикой ведутся?

1. Ну нативные вставки вообще любую проблему решат.
2. Не слышал, чтобы этому уделялось внимание.

  • 1