美文网首页Android NDK开发Android开发经验谈Android知识
0x04 JNI内存释放 - 防止内存泄漏/OOM

0x04 JNI内存释放 - 防止内存泄漏/OOM

作者: lc_fan | 来源:发表于2018-03-20 12:13 被阅读22次

有时android报错堆栈显示错误码512,并显示多少个object、string、class,说明该类型某变量没有释放。
返回java层的不必release,gc自动回收。

释放方法

1.env->DeleteLocalRef(ref)

  • jclass ref= (env)->FindClass("java/lang/String");
  • jclass ref = env->GetObjectClass(robj);
  • jstring (NewString)(JNIEnv, const jchar*, jsize);
  • jstring (NewStringUTF)(JNIEnv, const char*);

2. env->DeleteGlobalRef(globalRef);

  • jobject globalRef = env->NewGlobalRef(customObj);

3. env->ReleaseStringUTFChars(jinput,input);

const char* input =env->GetStringUTFChars(jinput, &isCopy);

4. env->ReleaseStringUTFChars( jstring, const char*)

const char* (GetStringUTFChars)(JNIEnv, jstring, jboolean*);

5. env->ReleaseByteArrayElements(jarray,array,0);

jbyte* array= env->GetByteArrayElements(jarray,&isCopy);

相关文章

  • 0x04 JNI内存释放 - 防止内存泄漏/OOM

    有时android报错堆栈显示错误码512,并显示多少个object、string、class,说明该类型某变量没...

  • Android 内存泄漏和OOM分析(一)

    这段时间在研究如何处理内存泄漏问题和防止OOM(内存溢出) 首先是内存泄漏:(这个是摘抄,加入了自己的理解) 说完...

  • OOM总结

    OOM:out of memory 原因 内存泄漏:申请使用完的内存没有释放,导致虚拟机不能再次使用该内存,此时这...

  • Android OOM之内存泄漏详解

    OOM(OutOfMemory)就是我们平时所碰到的内存溢出,而内存泄漏的最终后果就是导致OOM。内存泄漏是造成应...

  • Android性能优化—布局优化技巧

    前面几篇文章在前面几篇文章当中, Android 内存泄漏和OOM分析(一) Android 内存泄漏和OOM分析...

  • OOM面试讲解

    一、什么是OOM? 程序在申请内存后,被某个对象一直持有.无法释放已申请的内存空间.一次内存泄漏可以忽略,但内存泄...

  • 谈谈 LeakCanary 原理 --标准答案

    内存泄漏传统意义上的内存泄漏是至忘记手动释放内存,导致未释放的内存不可使用的现象。 jvm 的内存泄漏jvm的内存...

  • 面试题-第一期

    内存泄漏&&内存溢出 参考博客参考博客 先来看看内存泄漏,内存溢出,OOM,GC回收这几个概念。把App的堆内存空...

  • Android 内存优化

    Android内存泄露容易导致内存溢出,又称为OOM。 内存泄漏怎么产生的 资源对象没关闭造成的内存泄漏 构造Ad...

  • 【JVM】内存溢出分析

    一 内存溢出概述 都有发生内存溢出异常(OutOfMemoryError,简称OOM)的可能。 内存溢出和内存泄漏...

网友评论

    本文标题:0x04 JNI内存释放 - 防止内存泄漏/OOM

    本文链接:https://www.haomeiwen.com/subject/algvqftx.html