博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JNI内存泄露JNI ERROR (app bug): local reference table overflow (max=512)
阅读量:5016 次
发布时间:2019-06-12

本文共 1964 字,大约阅读时间需要 6 分钟。

原因是没即时释放对象,原本的代码是这样

static jobject getMaps(JNIEnv *env,jclass obj){	jclass stringbuilder_class = (*env)->FindClass(env,"java/lang/StringBuilder");		jmethodID init_stringbuilder_Method = (*env)->GetMethodID(env,stringbuilder_class,"
","()V"); jobject stringbuilder_obj=(*env)->NewObject(env,stringbuilder_class,init_stringbuilder_Method); jmethodID append_Method = (*env)->GetMethodID(env,stringbuilder_class,"append","(Ljava/lang/Object;)Ljava/lang/StringBuilder;"); FILE * fileP; char item[200]="ii"; fileP = fopen( "/proc/self/maps","r"); if(!fileP) return stringbuilder_obj; while(fgets(item,sizeof(item),fileP)!=NULL) { jstring str = (*env)->NewStringUTF(env,item); (*env)->CallObjectMethod(env,stringbuilder_obj,append_Method,str); (*env)->ReleaseStringUTFChars(env,str,item); (*env)->DeleteLocalRef(env,str); } return stringbuilder_obj; }

 

直接看去好像没什么问题,但是每调用一次    (*env)->CallObjectMethod(env,stringbuilder_obj,append_Method,str)

 

;都会产生个对象,我一开始以为这样没事,改成这样程序就不崩了

 

static jobject getMaps(JNIEnv *env,jclass obj){	jclass stringbuilder_class = (*env)->FindClass(env,"java/lang/StringBuilder");		jmethodID init_stringbuilder_Method = (*env)->GetMethodID(env,stringbuilder_class,"
","()V"); jobject stringbuilder_obj=(*env)->NewObject(env,stringbuilder_class,init_stringbuilder_Method); jmethodID append_Method = (*env)->GetMethodID(env,stringbuilder_class,"append","(Ljava/lang/Object;)Ljava/lang/StringBuilder;"); FILE * fileP; char item[200]="ii"; fileP = fopen( "/proc/self/maps","r"); if(!fileP) return stringbuilder_obj; while(fgets(item,sizeof(item),fileP)!=NULL) { jstring str = (*env)->NewStringUTF(env,item); //加个temp用来释放 jobject temp=(*env)->CallObjectMethod(env,stringbuilder_obj,append_Method,str); (*env)->ReleaseStringUTFChars(env,str,item); (*env)->DeleteLocalRef(env,str); (*env)->DeleteLocalRef(env,temp); } return stringbuilder_obj; }

 

转载于:https://www.cnblogs.com/formatfa/p/7109674.html

你可能感兴趣的文章
响应式布局编码
查看>>
微服务实战(三):深入微服务架构的进程间通信 - DockOne.io
查看>>
Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme
查看>>
Java:类与继承
查看>>
struts2-(2)HelloWorld
查看>>
python常用函数 库 转
查看>>
第一次爱你得是啥时候
查看>>
Redis4- llist的操作
查看>>
AJAX 实战【三级联动】分析
查看>>
日志收集思考
查看>>
asp.net 发布后,遇到的导出excel报错的问题
查看>>
(转)Spring boot——logback.xml 配置详解(四)<filter>
查看>>
项目中操作redis改brpop阻塞模式为订阅模式的实现-java实习笔记二
查看>>
PHP中各种Hash算法性能比较
查看>>
对象深度克隆
查看>>
12动态规划运用实例
查看>>
规则9 减少DNS查找
查看>>
web 富文本编辑器总结
查看>>
限制某个进程只能在某个CPU上运行
查看>>
宋体、实例-Java中的单例模式-by小雨
查看>>