我正在尝试检测神秘的 System.gc() 来自何处, 所以我希望在所有对 System.gc() 的调用上创建切入点
该文档描述了如何编织现有的 jar 和现有的目录,但是 我如何编织 JDK 本身?
非常感谢
最佳答案
您可以预先编写rt.jar
并将其替换到您的JDK/JRE中。请注意,加载时编织将不起作用,因为 Javaagent 无法访问引导类加载器。
但是,快速搜索发现整个 JDK (Sun 1.6.0_26) 中只有一处显式调用 System.gc()
:
java.nio.Bits#reserveMemory
也许您可以简单地附加一个调试器并在 gc()
方法上放置一个断点?
话虽这么说,您可以使用 call()
建议,而不是 execution()
,后者将编织调用客户端代码而不是目标方法。因此,您只需编写代码和所有库,而不需要编写 JDK。
关于maven - spectj-maven-编译器插件 : how to weave JRE System. *?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7625122/