所有返回一个
jobject或类似对象引用的JNI方法都在引用表中创建本地引用。当您将控制权返回给JVM时,这些引用会自动清除,但是如果要创建许多引用(例如,在循环中),则需要手动清除它们。
通过调用引用,您处在正确的轨道
DeleteLocalRef上
cls,但是请注意,它
GetObjectField还会返回一个
jobject,因此在退出该函数之前,也应删除在此返回的引用。
从错误情况返回之前,还请确保清除所有现有引用!
执行此 *** 作的另一种方法:在循环中要调用的函数的顶部,在要返回的函数中的任何位置之前先调用
PushLocalframe( env, 5)并调用
PopLocalframe(env)。这将自动清除在该函数调用期间创建的所有引用。第二个参数是框架中所需的本地引用数-
如果在函数执行期间需要5个以上的本地引用,请使用大于5的值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)