问题描述
我遇到了一个无法捕捉的错误,如下所示。 我应该从哪里开始调试这种错误?
我猜这是内存泄漏问题或 GC 引用了已删除的对象。 但是,错误消息并没有给我任何线索,为什么会发生这种情况,或者我应该从哪里开始挖掘......
您可以查看vimeo
JNI ERROR (app bug): accessed deleted Global 0x606a
[java_vm_ext.cc] JNI DETECTED ERROR IN APPLICATION: use of deleted global reference 0x606a
[java_vm_ext.cc] "Thread-28" prio=10 tid=34 Runnable
[java_vm_ext.cc] | group="main" sCount=0 dsCount=0 flags=0 obj=0x13080000 self=0x7ac5a58c00
[java_vm_ext.cc] | sysTid=8181 nice=-10 cgrp=default sched=0/0 handle=0x7aaabfd4f0
[java_vm_ext.cc] | state=R schedstat=( 237903034 19270156 585 ) utm=20 stm=3 core=3 HZ=100
[java_vm_ext.cc] | stack=0x7aaa9fe000-0x7aaaa00000 stackSize=2MB
[java_vm_ext.cc] | held mutexes= "mutator lock"(shared held)
[java_vm_ext.cc] native: #00 pc 00000000003cb654 /system/lib64/libart.so
// ...
[libc] Fatal signal 6 (SIGABRT),code -6 (SI_TKILL) in tid 8181 (GLThread 25),pid 7983 (ngoslab.lithium)
这里是完整的error log
解决方法
我找到了原因。当同时使两个 SKGLView
无效时,我面临 JNI ERROR (app bug): accessed deleted Global 0x606a
。
因此,我从 SKGLView
更改为 SKCanvasView
。之后,问题就再也没有出现过。