如何修复错误“JNI ERROR (app bug): global reference table overflow (max=65535)”

Vya*_*lav 6 delphi android firemonkey

我的应用程序崩溃(很少)并报告此错误:

 "JNI ERROR (app bug): global reference table overflow (max=65535)"
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109] JNI ERROR (app bug): global reference table overflow (max=65535)
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109] global reference table dump:
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]   Last 10 entries (of 65533):
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]     65532: 0x134039c0 java.lang.String "cocalac"
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]     65531: 0x76dd9200 android.graphics.Typeface
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]     65530: 0x13403940 java.lang.String " "
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]     65529: 0x13403860 java.lang.String "sans-serif-light"
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]     65528: 0x1328c940 android.graphics.Paint
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]     65527: 0x13403840 java.lang.String "sans-serif-light"
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]     65526: 0x134038a0 java.lang.String "sans-serif-light"
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]     65525: 0x134038c0 java.lang.String "#todo"
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]     65524: 0x13403940 java.lang.String " "
03-04 14:22:05.974: A/art(15796): sart/runtime/indirect_reference_table.cc:109]     65523: 0x134038e0 java.lang.String "... more[+]"
Run Code Online (Sandbox Code Playgroud)

是什么导致此错误以及如何修复它?

siv*_*iva 5

您需要在完成后释放全局引用。Jni 对内存池保留了一些限制,以便检测内存泄漏。参考这个答案,解释很清楚。为什么我们需要删除全局引用