java - 拿起 JVM 方法调用

标签 java android jvm

我如何使用它的参数记录所有方法调用,由 JVM 在运行时执行,也许有可能更改方法参数,在调用方法之前做一些事情,而不更改 JVM 代码本身?

我已经跑过

  • 仪器仪表 ( http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/Instrumentation.html )
  • DTrace 及其代码 (http://github.com/dtrace4linux/linux)、

  • 但我是一个新手,不知道如何在细节中构建 JVM,我的主要问题是——这是从这段代码(Dtrace 的代码)开始的正确方法吗?也许你可以给我一篇文章来阅读?

    还有 - 我可以在 ART 或 dalvik 上做同样的事情吗? (不仅仅是可调试的应用程序,在 JDWP 的帮助下)。

    还有一件事 - JMVTI 太慢了,调用处理程序需要将近 300µs。

    编辑:

    链接,我得到:

    https://code.google.com/p/droidbox/

    http://mostly-about-java.blogspot.ru/2012/12/methodcallspy-building-own-method_3.html?m=1

    https://github.com/JakeWharton/hugo

    https://www.yourkit.com

    最佳答案

    从技术上讲,可以在 JVM 上使用自己的 javaagent .或者,您可以使用 AspectJ框架及其Load Time Weaver来简化这个过程。

    查看this article一些代码的示例和存储库:https://bitbucket.org/espinosa/methodcallspy0

    不幸的是,Dalvik/ART 不支持 javaagent,所以这只适用于“真正的”JVM,但不适用于 android。

    关于java - 拿起 JVM 方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28240105/

    相关文章:

    java - 错误 : Could not Find or Load Main Class [Building and executing JAR File]

    java - 一次连续向10000个客户发布数据

    java - jasypt PBKDF2 实现

    java - 如何在Android中打开装有Uri的文件?

    android - Firemonkey 安卓 NFC 适配器

    简单数据结构的Java内存使用

    java - 循环队列可能尚未初始化

    java - 通过应用程序在 Android 设备中执行挂载命令

    java - Android手机进行测试

    java - JVM的历史趋势