关于Android的内存释放的问题(实时大数据的JNI处理)

zengting 2014-02-11 09:06:34
我用java来获取android的摄像头的数据,然后通过JNI来把这些数据传到下面的C进行压缩,但发现捕捉摄像头的数据再传输到JNI后,几秒钟后会出现内存溢出

void Java_com_video_getYUVData(JNIEnv *env,jobject obj,jbyteArray out)
{

buffer=(jbyte*)(*env)->GetByteArrayElements(env,out, 0);//如果这句话注释后,内存就正常

}

奇怪的是,如果加入 buffer=(jbyte*)(*env)->GetByteArrayElements(env,out, 0); 程序就会慢慢内存溢出错误。

02-11 20:53:38.774: I/dalvikvm-heap(7090): Clamp target GC heap from 49.515MB to 48.000MB
02-11 20:53:38.774: D/dalvikvm(7090): GC_FOR_ALLOC freed 31K, 2% free 48581K/49095K, paused 93ms
02-11 20:53:38.774: I/dalvikvm-heap(7090): Forcing collection of SoftReferences for 115216-byte allocation
02-11 20:53:38.994: I/dalvikvm-heap(7090): Clamp target GC heap from 49.513MB to 48.000MB
02-11 20:53:38.994: D/dalvikvm(7090): GC_BEFORE_OOM freed 1K, 2% free 48579K/49095K, paused 224ms
02-11 20:53:39.004: E/dalvikvm-heap(7090): Out of memory on a 115216-byte allocation.
02-11 20:53:39.004: I/dalvikvm(7090): "Binder Thread #2" prio=5 tid=10 RUNNABLE
02-11 20:53:39.004: I/dalvikvm(7090): | group="main" sCount=0 dsCount=0 obj=0x41059c18 self=0x1b70d0
02-11 20:53:39.004: I/dalvikvm(7090): | sysTid=7102 nice=0 sched=0/0 cgrp=[fopen-error:2] handle=1401160
02-11 20:53:39.004: I/dalvikvm(7090): | schedstat=( 820000000 960000000 1320 ) utm=64 stm=18 core=0
02-11 20:53:39.004: I/dalvikvm(7090): at dalvik.system.NativeStart.run(Native Method)
02-11 20:53:39.014: E/Camera-JNI(7090): Couldn't allocate byte array for JPEG data


不加的话,一切正常,真不知道怎么处理(jbyteArray out是上层的java传下来的)
...全文
691 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinyu391 2015-06-18
  • 打赏
  • 举报
回复
当buffer不再使用时,要调用 ReleaseByteArrayElements(out,buffer, 0)
arctan90 2015-02-05
  • 打赏
  • 举报
回复
可以肯定,是你的buff造成了OOM,传入JNI的对象引用、容器、class、methodID都需要释放 所以只要在 buffer=(jbyte*)(*env)->GetByteArrayElements(env,out, 0); 后面加一句 (*env)->DeleteLocalRef(env, buffer); 就可以了。

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧