Android 什么会导致jni引用内存问题?一些详细的问题
我最近开始着手一个Android项目,通过JNI进行本机调用。我已经了解了关于本机调用可以创建的引用数量的限制。我想深入了解参考咨询管理的工作原理。我研究了一些信息,但仍然有一些问题我想知道答案。不言而喻:Android 什么会导致jni引用内存问题?一些详细的问题,android,memory,reference,java-native-interface,Android,Memory,Reference,Java Native Interface,我最近开始着手一个Android项目,通过JNI进行本机调用。我已经了解了关于本机调用可以创建的引用数量的限制。我想深入了解参考咨询管理的工作原理。我研究了一些信息,但仍然有一些问题我想知道答案。不言而喻: 本机代码中的哪种引用会导致超出这些内存限制?哪些计入限额,哪些不计入限额?他们中的一些人这样做而其他人不这样做的原因是什么 a) jclass、jobject、jmethodID、jfieldID(以及我没有提到的任何其他) b) 本地参考?全球参考?也许两者都有。如果两者都有,那么每种类
非常感谢您抽出时间
[1] A
jmethodID
或jfieldID
不是参考。调用JNIEnv
中的一个函数得到的任何jclass
或jobject
通常都是本地引用(除了一些明显的例外,如NewGlobalRef
)。关于本地参考表的限制,请参阅JNI函数文档中的EnsureLocalCapacity
。感谢您为我指出此函数。您知道是否有任何等价物可确保全球参考表容量?文档中没有提到这一点。全局参考限值应该要高得多。您可能同时拥有数千个。所以,如果你开始接近极限,老实说,你可能做错了什么。是的,我不打算:P我只是想对这些参考资料有一个深入的了解。就我所见,JNI文档中没有提到会查询/更改全局引用容量的函数。我看到的所有关于超出全局引用限制的错误都提到了该表的50.000+大小。AjmethodID
或jfieldID
不是引用。调用JNIEnv
中的一个函数得到的任何jclass
或jobject
通常都是本地引用(除了一些明显的例外,如NewGlobalRef
)。关于本地参考表的限制,请参阅JNI函数文档中的EnsureLocalCapacity
。感谢您为我指出此函数。您知道是否有任何等价物可确保全球参考表容量?文档中没有提到这一点。全局参考限值应该要高得多。您可能同时拥有数千个。所以,如果你开始接近极限,老实说,你可能做错了什么。是的,我不打算:P我只是想对这些参考资料有一个深入的了解。就我所见,JNI文档中没有提到会查询/更改全局引用容量的函数。我看到的所有关于超出全局引用限制的错误都提到了该表的50.000+大小。