有没有办法转储/查看jni globalref池?

时间:2014-11-26 10:38:41

标签: java android android-ndk java-native-interface

我最近正在做很多JNI工作,并希望监视(或至少转储)jni globalref池的内容。谷歌尚未提供任何有用的信息。

我注意到如果你确实触发了一个globalref-pool耗尽,它确实列出了池中的前10个项目,所以我希望有一些方法可以解决这个问题。

1 个答案:

答案 0 :(得分:4)

在Dalvik VM中,全局和(对于当前线程)本地引用表在dalvik/vm/Jni.cpp.dvmDumpJniReferenceTables()打印到日志中。dalvik/vm/native/dalvik_system_VMDebug.cppDalvik_dalvik_system_VMDebug_dumpReferenceTables()调用可以通过dalvik.system.VMDebug.dumpReferenceTables() method

从Java源代码访问

批准的方式是通过android.os.Debug.dumpReferenceTables() method来标记@hide,即它不是公共API的一部分。所以你应该通过反思来调用它。

我不知道在ART下会发生什么。