`

[AndroidTip]local reference table overflow (max=512)的错误解决

 
阅读更多

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);

 


分享到:
评论

相关推荐

    ardupilot中实现无人机风机不停机巡检的lua脚本

    local dist_max = 40 --飞机离桨叶的最大距离 m --桨叶角速度参数: local detectNextTime_ms = 0 --检测到下个桨叶的平均时间 local lastDetectTime_ms = 0 --上次检测到桨叶的时间 ms local detecTimeRange_ms = ...

    Local Binary Patterns

    Reference ========= 1. Guoying Zhao, Matti Pietikäinen, "Dynamic Texture Recognition Using Local Binary Patterns with an Application to Facial Expressions," IEEE Transactions on Pattern Analysis ...

    max启动自动关闭解决方法

    本文将深入探讨“max启动自动关闭解决方法”,旨在帮助用户解决3D Studio Max(通常简称为3ds Max)在启动时自动关闭的问题,这是一种常见的软件故障现象,可能由多种因素引起。 ### 一、问题分析 3ds Max是一款...

    Android WebView 报 Not allowed to load local resource错误的解决办法

    Android WebView 报 Not allowed to load local resource错误的解决办法 博客地址:http://blog.csdn.net/yuzhiqiang_1993/article/details/76228541

    小波的代码-local_max_dujiaoxian.m

    小波的代码-local_max_dujiaoxian.m zhengxing.m sub_m.m rank_c.m mulscale_edge.m mul_c.m max_c...

    小波的代码-local_max_mode.m

    小波的代码-local_max_mode.m zhengxing.m sub_m.m rank_c.m mulscale_edge.m mul_c.m max_c.m ...

    local_max_mode.rar_local_max_mode_自适应图像

    "local_max_mode.rar_local_max_mode_自适应图像"这个压缩包文件聚焦于一种特殊的边缘检测方法:自适应阈值的局部极大值检测。这种技术能够有效地改善传统全局阈值方法的局限性,提高图像分割的准确性和鲁棒性。 ...

    Linux服务器下常用应用环境安装,nginxtomcatmysqlantjdk配置归类.pdf

    max_heap_table_size = 512M #重点优化参数,在数据库写入量或是更新量也比较大的系统,该参数不适合分配过大 query_cache_size = 512M 设置 mysql 用户和用户组: groupadd mysql useradd mysql 三、Nginx 安装和...

    Nginx常见错误及解决方法.doc

    Nginx 常见错误及解决方法 Nginx 是一个流行的开源 Web 服务器软件,然而在实际使用中经常会遇到各种错误,影响服务器的稳定运行。下面将介绍 Nginx 中的一些常见错误及解决方法。 一、Nginx 启动错误 在安装 ...

    安装过程中1327错误解决方式

    ### 安装过程中1327错误解决方式 #### 错误概述 在软件或应用程序的安装过程中,可能会遇到一个常见的问题——“1327错误”。这种错误通常出现在安装程序试图访问某个路径时,发现该路径对应的硬盘驱动器或网络驱动...

    协议适配器错误解决方法

    协议适配器错误解决方法 协议适配器错误是指在数据库管理系统中,协议适配器无法正常工作,导致数据库无法启动或连接失败。这种错误可能是由于多种原因引起的,如监听服务没有启动、数据库实例没有启动、注册表问题...

    开机自检时候提示mount local filesystem failed解决方案

    在IT领域,遇到“开机自检时候提示mount local filesystem failed”的问题时,这通常意味着系统在启动过程中未能成功挂载本地文件系统。这种情况可能由多种因素引起,包括但不限于硬件故障、文件系统损坏、配置错误...

    Linux安装mysql压缩包安装

    datadir=/usr/local/mysql/data port = 3306 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES symbolic-links=0 max_connections=800 max_connect_errors = 1000 innodb_file_per_table=1 lower_case_table_...

    office2010安装常见出错代码分析及解决办法

    以下是对这些错误的详细分析和解决方法。 1. **彻底卸载Office2010** 卸载Office2010时,单纯依赖控制面板或第三方卸载工具可能无法完全移除所有关联文件和注册表项。可以尝试以下方法: - 使用`Office 2010 ...

    json转lua-table工具

    JSON(JavaScript Object Notation)和Lua Table 是两种广泛使用的数据序列化格式,分别在Web开发和游戏编程领域中占据重要地位。JSON因其简洁明了的结构而被广泛用于数据交换,而Lua Table则是Lua编程语言中的核心...

    解决Android下getifaddrs和freeifaddrs undefined reference 的问题

    因此,当你尝试在C或C++代码中使用这两个函数时,编译器会报出“undefined reference”错误。 为了解决这个问题,你可以采取以下几种方法: 1. **静态链接libresolv库**:在Android.mk或者CMakeLists.txt中,确保...

    3dmax2009的安装方法

    ### 3DMax 2009中文版安装方法及常见问题解决 #### 一、安装前准备 在正式开始安装3DMax 2009之前,我们需要做一些准备工作: 1. **确认操作系统版本**:确保您的计算机运行的是与3DMax 2009兼容的操作系统版本。...

    利用socket实现通信

    struct sockaddr_in local; struct sockaddr_in from; int fromlen =sizeof(from); local.sin_family=AF_INET; local.sin_port=htons(1000); ///监听端口 local.sin_addr.s_addr=INADDR_ANY; ///本机

    网管常用命令

     add address name = "Local Area Connection" addr = 192.1.1.111 mask = 255.255.255.0  set address name = "Local Area Connection" gateway = 192.168.1.100 gwmetric = 1  set dns name = "Local Area ...

Global site tag (gtag.js) - Google Analytics