Вероятно, наиболее распространенным способом является использование выборки . JVM предоставляет средства для запроса текущей трассировки стека всех потоков (или тех, которые вас интересуют), а также того, сколько ЦП они израсходовали. Таким образом, вы периодически делаете это. При каждом вызове, если поток находится внутри интересующего вас метода, то предположим, что он потратил половину сообщенного времени ЦП с момента последнего опроса внутри этого метода.
Если этот метод звучит уместно, некоторое время назад я написал материал по средствам профилирования Java 5 , который может вам помочь.
Java 5 также предоставляет среду инструментария, с помощью которой вы можете лечить классы по мере их загрузки, чтобы включить вызовы на вход и выход к вашему заданному методу, так что вы можете измерить использование ЦП только внутри этого метода. Однако это немного сложнее в программировании, потому что вам нужно проверить действительные двоичные файлы классов по мере их загрузки.