我在最开始的每个本机方法调用中调用EnsureLocalCapacity():
void ensureMemory(JNIEnv *env) {
jint ensureResult = env->EnsureLocalCapacity(MAX_LOCALS_COUNT);
debug("ensure result for %i is %i", MAX_LOCALS_COUNT, ensureResult);
确保1024的结果为0
env:[0x7fccc60011d0]
并且在env->NewObject()
上几次调用后崩溃(异常被clang劫持(我试图通过clang c-api使用)):
libclang:在索引源文件期间检测到崩溃:{
'source_filename': '/Users/asmirnov/Documents/dev/src/clang_jni/mac/test/TestFile.h'
'command_line_args':[' - c',' - x','c ++'],'unsaved_files':[],
'options':0,}
因此,每当我不需要本地var时,我会调用env->DeleteLocalRef
,因此似乎超出了16个本地参考限制。我该怎么办?
答案 0 :(得分:0)
通过在JNI_OnLoad()
中调用EnsureLocalCapacity
来修复