在写的项目中,使用JniHelper来进行c++和java之间的互相调用,结果在使用安卓上的取系统时间函数
SystemClock.uptimeMillis()
然后回传给C++,发现程序在运行7,8秒时就crash了,查看logcat,
发现是JNI的local reference table用完了,接着上网查询了一下,
发现只要是jclass类型的元素都需要在使用完后调用DeleteLocalRef,而JniMethodInfo中的classID也属于jclass类型,故同样需要删除。
难怪程序会在数秒后crash,取系统时间的函数我每帧都会调用,
每次都会leak一个classID,所以很快JNI中table就不够用啦