首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >释放JNI数组

释放JNI数组
EN

Stack Overflow用户
提问于 2012-12-03 21:26:48
回答 1查看 2.6K关注 0票数 1

我正在用C++实现一个回调函数,但我面临着一些泄漏问题。

创建数组的实现:

代码语言:javascript
复制
jshortArray convertShortArrayToJNI(JNIEnv* env, short* arr, size_t count) {
  jshortArray retval = env->NewShortArray(count);
  env->SetShortArrayRegion(retval,0,count,arr);
  return retval;
}

下面是回调调用:

代码语言:javascript
复制
short* audio_frame;
int size;
jobject* callbackObject;
jshortArray array = convertShortArrayToJNI(jenv, audio_frame, size);
LOGI("array %d", array);
jenv->CallVoidMethod(*callbackObject, callbackMI, array);
LOGI("callback called!");
jenv->ReleaseShortArrayElements(array, audio_frame, 0);

在一些调用之后,它显示了下面的错误:

代码语言:javascript
复制
12-03 11:12:38.425: W/dalvikvm(894): ReferenceTable overflow (max=512)
12-03 11:12:38.425: W/dalvikvm(894): Last 10 entries in JNI local reference table:
12-03 11:12:38.425: W/dalvikvm(894):   502: 0x44f879b0 cls=[S (100 bytes)
12-03 11:12:38.435: W/dalvikvm(894):   503: 0x44f87a98 cls=[S (100 bytes)
12-03 11:12:38.435: W/dalvikvm(894):   504: 0x44f87b80 cls=[S (100 bytes)
12-03 11:12:38.435: W/dalvikvm(894):   505: 0x44f87c68 cls=[S (100 bytes)
12-03 11:12:38.435: W/dalvikvm(894):   506: 0x44f87d50 cls=[S (100 bytes)
12-03 11:12:38.435: W/dalvikvm(894):   507: 0x44f87e38 cls=[S (100 bytes)
12-03 11:12:38.435: W/dalvikvm(894):   508: 0x44f87f20 cls=[S (100 bytes)
12-03 11:12:38.435: W/dalvikvm(894):   509: 0x44f88008 cls=[S (100 bytes)
12-03 11:12:38.435: W/dalvikvm(894):   510: 0x44f880f0 cls=[S (100 bytes)
12-03 11:12:38.435: W/dalvikvm(894):   511: 0x44f881d8 cls=[S (100 bytes)
12-03 11:12:38.435: W/dalvikvm(894): JNI local reference table summary (512 entries):
12-03 11:12:38.435: W/dalvikvm(894):     1 of Ljava/lang/Class; 164B
12-03 11:12:38.435: W/dalvikvm(894):   511 of [S 100B (511 unique)
12-03 11:12:38.435: W/dalvikvm(894): Memory held directly by tracked refs is 51264 bytes

怎么啦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-03 22:12:37

这就是答案:ReferenceTable overflow (max=512) JNI

调用jenv->DeleteLocalRef(array);解决我的问题!

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13684232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档