有什么方法可以转储/查看jni globalref池?

Bag*_*ers 1 java java-native-interface android android-ndk

我最近正在做很多JNI工作,并且想监视(或至少转储)jni globalref池的内容。Google尚未提供任何帮助。

我注意到,如果您确实触发了globalref-pool耗尽,它会列出池中的前10个项目,因此我希望可以通过某种方法来解决。

fad*_*den 5

在Dalvik VM中,全局和(对于当前线程)本地ref表通过dalvik / vm / Jni.cpp打印到日志dvmDumpJniReferenceTables() 这是从称为Dalvik_dalvik_system_VMDebug_dumpReferenceTables()达尔维克/ VM /天然的/ dalvik_system_VMDebug.cpp,这是从通过Java源代码访问dalvik.system.VMDebug.dumpReferenceTables() 方法

批准的调用android.os.Debug.dumpReferenceTables() 方法是通过标记为的方法@hide,即它不是公共API的一部分。因此,您应该通过反射来调用它。

我不知道这在ART下有什么作用。