JNI: EnsureLocalCapacity ignored

JNI: EnsureLocalCapacity ignored

本文关键字:ignored EnsureLocalCapacity JNI      更新时间:2023-10-16

>i 在一开始的每个本机方法调用中调用 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' : [],
'选项' : 0, }

所以似乎超过了 16 个本地引用限制,尽管我每次不需要本地 var 时都会打电话给env->DeleteLocalRef。我该怎么办?

在 JNI_OnLoad() 中调用 EnsureLocalCapacity 修复