我正在尝试检测神秘的System.gc()来自何处, 所以我希望在所有对System.gc()
的调用中创建一个切入点该文件描述了如何编织现有的罐子和现有的dirs,但是 我如何编织JDK本身?
非常感谢
答案 0 :(得分:1)
您可以预先编织rt.jar
并在JDK / JRE中替换它。请注意,加载时间编织不起作用,因为Javaagent无法访问引导类加载器。
然而,快速搜索显示整个JDK(Sun 1.6.0_26)中只有一个地方明确调用System.gc()
:
java.nio.Bits#reserveMemory
也许您可以简单地附加一个调试器并在gc()
方法上放置一个断点?
话虽如此,你可以使用call()
建议,而不是execution()
,它将编织调用客户端代码而不是目标方法。所以你只需要编写代码和所有库而不是JDK。