local reference table overflow 内存泄露

2023-11-09

local reference table overflow
JNI层coding经常会遇到ReferenceTable overflow问题,特别是当jni函数被反复调用上千上万次的时候,现汇总如下,未完待续,并欢迎补充,(*^__^*) 嘻嘻……
总体原则:释放所有对object的引用
1.FindClass 
例如,
jclass ref= (env)-> FindClass("java/lang/String");
env-> DeleteLocalRef(ref); 
2.NewString/ NewStringUTF/NewObject/NewByteArray
例如,
jstring     (*NewString)(JNIEnv*, const jchar*, jsize);    
const jchar* (* GetStringChars)(JNIEnv*, jstring, jboolean*);     
void        (* ReleaseStringChars)(JNIEnv*, jstring, const jchar*);
jstring     (*NewStringUTF)(JNIEnv*, const char*);    
const char* (* GetStringUTFChars)(JNIEnv*, jstring, jboolean*);     
void        (* ReleaseStringUTFChars)(JNIEnv*, jstring, const char*);
env-> DeleteLocalRef(ref);
3. GetObjectField/GetObjectClass/GetObjectArrayElement
jclass ref = env->GetObjectClass(robj);
env-> DeleteLocalRef(ref); 
4.GetByteArrayElements
jbyte* array= (*env)-> GetByteArrayElements(env,jarray,&isCopy);
(*env)-> ReleaseByteArrayElements(env,jarray,array,0);
4.const char* input =(*env)-> GetStringUTFChars(env,jinput, &isCopy);
(*env)-> ReleaseStringUTFChars(env,jinput,input);
5.NewGlobalRef/DeleteGlobalRef
 jobject     (* NewGlobalRef)(JNIEnv*, jobject); 
void        (* DeleteGlobalRef)(JNIEnv*, jobject);
例如,
jobject ref= env-> NewGlobalRef(customObj);
env-> DeleteGlobalRef(customObj);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

local reference table overflow 内存泄露 的相关文章

随机推荐

  • uni-app提供开箱即用的SSR支持

    SSR 服务端渲染 可以给SPA站点带来两大核心优势 更好的SEO 更快的首屏渲染 很多uni app开发者都在积极尝试SSR 但大多没入门就放弃了 原因在于SSR颇高的技术门槛 vue js 官网在介绍 SSR 章节时的描述如下 本指南将
  • Python pycharm(windows版本)部署spark环境

    一 部署本地spark环境 1 1 安装好JDK 下载并安装好jdk1 7 配置完环境变量 1 2 Spark环境变量配置 去http spark apache org downloads html网站下载相应hadoop对应的版本 我下载
  • GD32 ADC检测电压

    GD32 ADC检测电压 https blog csdn net yangkunhenry article details 112757855 GD32的参考电压在规格书上没有查到 但是由于GD32 和STM32的 某种关系 STM32 的
  • 基本农田卫星地图查询_谷歌地图 最新版v7.3.0

    谷歌地图整合Google的本地搜索以及驾车指南两项服务 能够鸟瞰世界 将取代目前桌面搜索软件 谷歌地图可在虚拟世界中如同一只雄鹰在大峡谷中自由飞翔 登陆峡谷顶峰 潜入峡谷深渊 谷歌地图使用界面 相关软件 版本说明 下载地址 谷歌卫星地图下载
  • 感受了一下myspace

    今天去 www myspace com 看了看 感觉还可以 这里是年轻人交流的一个平台 可以了解当前世界年轻的喜好 他们做什么 有想些什么 可以和自己对比 把握时代信息 我觉得还是有点必要 就想当初我进入 天涯 时一样 希望从中能学到一些东
  • qt opengl 加载3d模型(obj格式)

    和一般c 程序加载3d模型一样 解读出数据内容 再用一个常规的着色程序就可以了 我实现的效果如下 采用的免费模型 实现思路和前面的略有不同 就是把自己生成顶点 纹理 法线的过程变成从文件读取了 我的obj文件如下 mtllib C User
  • 征服面试官:RxJava 原理篇 掌握这篇面试题汇总,吊打面试官!

    1 RxJava 如何实现线程切换 subscribeOn 是通过新建 Observable 的方式 使用 OnSubscribe 类的方式去做到线程切换的 observeOn 是通过 operator 操作符的形式去完成线程切换的 所以他
  • C++ 函数模板和类模板--泛型编程

    所谓函数模板 实际上是建立一个通用函数 其函数类型和形参类型不具体指定 用一个虚拟的类型来代表 这个通用函数就称为函数模板 凡是函数体相同的函数都可以用这个模板来代替 不必定义多个函数 只需在模板中定义一次即可 一 函数模板初识 1 为什么
  • java基础知识点

    作者简介 哪吒 CSDN2022博客之星Top1 CSDN2021博客之星Top2 多届新星计划导师 博客专家 专注Java硬核干货分享 立志做到Java赛道全网Top N 本文收录于 Java基础教程系列 目前已经700 订阅 CSDN最
  • Java JDK11快速下载地址

    Linux deb 地址一 deb 地址二 rpm 地址一 rpm 地址二 tar gz 地址一 tar gz 地址二 MacOS dmg 地址一 dmg 地址二 tar gz 地址一 tar gz 地址二 Windows exe 地址一
  • Android studio导入图片出现下划红线怎么破

    首先 Android studio的图片命名需要全部字母小写 其次 导入的话 复制文件paste到drawable就可以 红线不是导入操作的问题
  • Vue的监视属性watch、深度监视以及监视的简写

    一 两种监视方式 1 watch属性直接监视 如果刚开始确定监视对象 在vue中可以直接使用watch属性实现监视 watch 正常写法 Info immediate true handler newValue oldValue conso
  • 栈、队列的基本概念和操作

    目录 一 栈 stack 了解 1 1 栈的实现和操作 二 队列 queue 了解 2 1 队列的实现与操作 2 2 双端队列 一 栈 stack 了解 概念 栈 stack 有些地方称为堆栈 是一种容器 可存入数据元素 访问元素 删除元素
  • hive指定字段插入数据,包含了分区表和非分区表

    1 建表 语句如下 CREATE EXTERNAL TABLE ods lineitem full l shipdate date l orderkey bigint l linenumber int l partkey int l sup
  • 【使用kubeadm安装部署K8S】

    问题 使用kubeadm安装部署K8S 该篇文章介绍利用kubeadm进行安装部署K8S 方法 1 准备环境 软件环境 软件 版本 操作系统 CentOS7 9 x64 mini Docker 19 ce Kubernetes 1 20 服
  • MFC中使用CBitmap类进行绘图

    大家看名字就可以知道 这个类是用来绘制位图的 即以 bmp 为后缀的图片 一般游戏之中 需要使用的图片比较多 都会将图片先存为文件 然后从文件中读取 而从文件中读取图片的步骤有以下几步 1 建立一个与窗口DC兼容的内存DC 我们加载的图片是
  • 推荐几个Python爬虫接单渠道

    说起兼职 我有一位做了4年Python工程师的朋友 爬虫做副业起码挣了20W 写各种奇葩爬虫挣钱 爬虫兼职方式多 单也很多 首先是爬虫外包活 国内有平台接单 价格500 4000不等 也可以帮互联网运营爬数据做网站 那群人一天到晚死磕数据
  • CXF拦截器

    引言 CXF拦截器是Apache CXF里面一个很重要的功能 它能够动态操作响应数据和请求数据 降低代码的耦合性 提供代码的内聚性 这对于CXF这个以处理消息为中心的服务框架来说是非常有用的 CXF通过在Interceptor中对消息进行特
  • mysql 创建订单表语句_MySQL创建表语句

    表 t admin tabs 列信息 Field Type Collation Null Key Default Extra Privileges Comment admin id int 11 unsigned NULL NO PRI N
  • local reference table overflow 内存泄露

    local reference table overflow JNI层coding经常会遇到ReferenceTable overflow问题 特别是当jni函数被反复调用上千上万次的时候 现汇总如下 未完待续 并欢迎补充 嘻嘻 总体原则