加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 必须在GetStringUTFChars之后调用ReleaseStringUTFChars

发布时间:2020-12-15 03:05:13 所属栏目:Java 来源:网络整理
导读:我对从 java传递给c的对象有点困惑?它们应该在本机jni方法中删除,还是在方法返回时进行垃圾收集.例如: 如果我在我的java文件中有一个本机声明public native printString(String msg);并且本机方法使用const char * message =(jni_env) – GetStringUTFChar
我对从 java传递给c的对象有点困惑?它们应该在本机jni方法中删除,还是在方法返回时进行垃圾收集.例如:

如果我在我的java文件中有一个本机声明public native printString(String msg);并且本机方法使用const char * message =(jni_env) – > GetStringUTFChars(msg,& iscopy);获取c风格的字符串数组.我打电话给(jni_env) – > ReleaseStringUTFChars(msg,message);在用本机方法做所有的东西之后.如果是,那为什么有必要呢?为什么java运行时环境不代表程序员这样做呢?在声明了所有字符串并从java环境传递之后.

解决方法

Get Characters函数将字符固定在内存中,直到调用Release方法. Java无法进行垃圾收集或以其他方式移动此数据,直到确定没有人使用它为止.

Java VM一旦离开Java虚拟机就无法知道内存的使用时间,因此需要手动通知内存已经完成.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读