我试图检测一个神秘的System.gc((来自哪里,所以我希望在所有对System.gc((的调用上创建一个切入点
文档描述了如何编织现有的jar和dirs,但是如何编织JDK本身?
非常感谢
您可以预先编织rt.jar
并在JDK/JJRE中替换它。请注意,加载时编织将不起作用,因为Javaagent没有访问引导类加载器的权限。
然而,快速搜索显示,在整个JDK(Sun 1.6.0_26(中,只有一个地方显式调用System.gc()
:
java.nio.Bits#reserveMemory
也许您可以简单地附加一个调试器,并在gc()
方法上设置一个断点?
也就是说,您可以使用call()
建议,而不是execution()
,后者将编织调用客户端代码而不是目标方法。所以你只需要编织你的代码和所有的库,而不是JDK。