Я не знаю о Sun JVM, но IBM JVM переходит в то, что мы называем режимом FullSpeedDebug, когда вы запрашиваете события MethodEntry / Exit .... FSD немного замедляет выполнение.
КакВы говорите, что можете использовать BCI, как мой профилировщик, но если вы не будете выбирать, какие методы вы используете, вы также увидите замедление.Например, мой профилировщик вставляет if (profiling) callProfilerHook () в каждую запись и все возможные выходы в методе, который создает весь объект, а также в некоторых других областях .... Эти дополнительные проверки могут замедлить выполнение более чем на 50%...
Что касается того, как BCI ... ну, я написал свою собственную библиотеку C, чтобы сделать это ... это технически не сложно (подсказка просто удалить StackMapTable), но я могу занять некоторое время ... В качестве альтернативыВы можете использовать ASM et.al.
Наконец ... ваш callBackHook добавит накладные расходы и при небольших методах сделает израсходованное время ЦП / Часы бессмысленным, если вы не выполните некоторые сложные вычисления служебных данных ... даже если вы сделаете это, ваш код обратного вызова повлияет на формукэшей L1 процессора, и код Java становится менее эффективным, потому что в нем меньше местапоток всего кода, фактически в большинстве случаев, какой код выполняется (большинство проектов Java не имеют представления о миллионах строк стороннего кода, выполняющегося в их приложении)