0

我在一开始就在每个本机方法调用中调用 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

环境:[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, }

env->DeleteLocalRef因此,尽管我每次不需要本地 var 时都会调用,但似乎超出了 16 个本地引用限制。我应该怎么办?

4

1 回答 1

0

通过调用EnsureLocalCapacityJNI_OnLoad()修复

于 2013-11-12T06:41:43.610 回答