JNI中NewByteArray了一个byte[]对象并返回,需要手动释放这个对象吗?

PDD123 2018-07-11 04:25:17
package com.pdd.AAAAA;

public class BBBBBB
{
public synchronized native static byte [] EncryptFirstStep(byte[] a,byte [] b);
}



extern "C" JNIEXPORT jbyteArray
JNICALL
Java_com_pdd_AAAAA_BBBBBB_EncryptFirstStep(
JNIEnv *env
,jobject thisObj
,jbyteArray nm4E84Dat
,jbyteArray nmBuffer
)
{
//省略...
jbyteArray result=env->NewByteArray(100);
// env->SetByteArrayRegion(result, 0, resultsize, somedat);
return result;//result需要手动释放吗?
}


如果不是返回值,那就应该用DeleteLocalRef释放。
但这里result是返回值,按照方便程序员、防止内存泄漏的思路,应该是不需要手动释放的吧?
如果要手动释放,那只能再弄一个native 接口,然后在其中直接调用DeleteLocalRef了?
...全文
4666 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
NorZ 2020-03-02
  • 打赏
  • 举报
回复
引用 5 楼 PDD123 的回复:
[quote=引用 4 楼 jemenchen 的回复:] 楼主确认了吗?吧jbytearray之类的作为native函数的返回值,真的不需要释放么?有没有观察native heap是否会一直增大?
确认了,程序长时间运行,很稳定。[/quote] ...也要看你返回值用在哪里,怎么用吧
PDD123 2019-10-22
  • 打赏
  • 举报
回复
引用 4 楼 jemenchen 的回复:
楼主确认了吗?吧jbytearray之类的作为native函数的返回值,真的不需要释放么?有没有观察native heap是否会一直增大?
确认了,程序长时间运行,很稳定。
jemenchen 2019-10-22
  • 打赏
  • 举报
回复
楼主确认了吗?吧jbytearray之类的作为native函数的返回值,真的不需要释放么?有没有观察native heap是否会一直增大?
PDD123 2018-08-04
  • 打赏
  • 举报
回复
确认了,不是返回值要手动释放,但是返回值就不需要手动释放!
ygauf78y 2018-07-13
  • 打赏
  • 举报
回复
肯定需要释放,不释放容易造成内存溢出,c++不能自动回收垃圾。如果返回值是int、float等才会这么写,一般不会返回一个Object类型。如果是java和c++交互需要用到Object类型时,一般都是这么操作:

public class BBBBBB {
public synchronized native static void EncryptFirstStep( byte[] a,byte [] b ,byte[] temp);

}


extern "C" JNIEXPORT jbyteArray
JNICALL
Java_com_pdd_AAAAA_BBBBBB_EncryptFirstStep(
JNIEnv *env
,jobject thisObj
,jbyteArray nm4E84Dat
,jbyteArray nmBuffer
,jbyteArray temp
)
{

env->SetByteArrayRegion(temp, 0, resultsize, somedat);
}

用byte[] temp来充当java与c++之间传值。只要temp在c++代码中已经进行赋值了,在java代码中就可以直接获取到temp的值。
游逸丶 2018-07-13
  • 打赏
  • 举报
回复
根据这篇博文:https://blog.csdn.net/c1481118216/article/details/77727573
中的意思是需要释放的。
建议写个循环,自己用Jprofiler测试一下再做决定

80,471

社区成员

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

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