В последней версии Java Microbenchmark Harness (JMH) появился новый профайлер — dtraceasm
, долгожданный порт perfasm
на Mac OS X, который умеет показывать ассемблерный профиль Java-бенчмарка.
Блиц-опрос показал, что не всем понятно, как в принципе возможно, получив на входе Java-метод, на выходе показать ассемблерный листинг скомпилированного метода с самыми горячими инструкциями, их распределением и небольшим профилем вида "А еще 5% времени виртуальная машина провела в методе Symbol::as_C_string(char*, int)
".
В процессе портирования perfasm
выяснилось, что на самом деле™ все не очень сложно и появилось желание рассказать, как такой профайлер устроен.
Для понимания статьи крайне желательно ознакомиться с JMH, например, посмотрев на примеры его использования.