Плагин aspectj-maven-compiler: как создать систему JRE. *? - PullRequest
1 голос
/ 02 октября 2011

Я пытаюсь определить, откуда появился таинственный System.gc (), поэтому я надеюсь создать pointcut для всех вызовов System.gc ()

Документ описывает, как плести существующие банки и существующие каталоги, но как сплести сам JDK?

Большое спасибо

1 Ответ

1 голос
/ 02 октября 2011

Вы можете заранее соткать rt.jar и заменить его в своем JDK / JRE.Обратите внимание, что переплетение времени загрузки не будет работать, поскольку Javaagent не имеет доступа к загрузчику загрузчиков классов.

Однако быстрый поиск показывает, что во всем JDK есть только одно место (Sun 1.6.0_26), которое вызывает System.gc() явно:

java.nio.Bits#reserveMemory

Может быть, вы можете просто присоединить отладчик и установить точку останова для метода gc()?

При этом можно использовать совет call() вместо execution() который будет соткать вызывающий клиентский код, а не целевой метод.Таким образом, вам нужно только сплести свой код и все библиотеки, а не JDK.

...