Можно ли эффективно подсчитывать вызовы методов? И без добавления новых членов класса (статическая переменная счетчика)?ASM. Ява. Можно ли эффективно рассчитывать вызовы методов? Без добавления новых членов класса
0
A
ответ
2
Вы можете сообщать о звонках с помощью статического метода, который вы предоставляете. Затем просто добавьте команду invokestatic
вместе с любыми аргументами, которые вы хотите передать. Наивный подход будет передавать имя и дескриптор метода, но так как это происходит во время выполнения, вы можете избежать сравнения строк при каждом вызове, зарегистрировав каждый метод с помощью API-интерфейса инструментария при первом сканировании класса, верните простой токен (a int
или long
) и изменить каждый метод для передачи этого токена при вызове метода, который записывает вызовы.
Спасибо! Лучше добавить статическую переменную в каждый класс. Однако в таком случае мне нужно сохранить хэш-карту с маркером key-method и количеством вызовов методов. Это довольно большая структура. –