maven - spectj-maven-编译器插件 : how to weave JRE System. *?

标签 maven aspectj java

我正在尝试检测神秘的 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/

相关文章:

java - 如何从本地 Maven 存储库中删除 Artifact 版本

maven - Antlr4 maven插件在不同目录下找不到语法文件

spring - 单元测试 Spring @Around AOP 方法

java - 处理中,无法为ArrayList中的对象设置alpha值

android - Protobuffers错误将库添加到android

导出项目后 Java list 文件发生更改

java - 如何使方法返回类型作为AspectJ ITD中的当前类型?

java - Spring Aspectj @Before 所有休息方法

javascript - 我无法显示 Base 64 编码图像?

java - 代码被跳过