JNI DeleteLocalRef的澄清

 2023-01-19    413  

问题描述

问题1:

jstring jstrKey;
for(int i=1;i<=1000;++i) {
    LPWSTR strKey = L"string";
    jstrKey = env->NewString((jchar *)strKey, wcslen(strKey));
}
env->DeleteLocalRef(jstrKey);

问题2:

JNI DeleteLocalRef的澄清

for(int i=1;i<=1000++i) {
    LPWSTR strKey = L"string";
    jstring jstrKey = env->NewString((jchar *)strKey, wcslen(strKey));
    env->DeleteLocalRef(jstrKey);
}

我是否在两个问题中都正确使用DeletelocalRef?

尤其是在问题1中,我在循环后删除本地裁判.我认为这是正确的,并且不必在循环中调用DeletelocalRef,因为我没有创建任何新的本地参考.

因此,关于DeleteLocalRef的使用没有问题吗?

推荐答案

在两种情况下,您都应该在循环内拨打DeleteLocalRef(),因为每个NewString() crers a prers a pres a pres a pres a pres a repain a repain Ref.

本地参考将由本机方法返回时丢弃本地引用,但是此过程与Java垃圾收集无关.通常,我们不必担心本地参考.但是本地的参考表通常很小,因此我们必须丢弃在循环中显着创建的未使用的参考文献.

其他推荐答案

第一个循环肯定不是正确的, ,但错误性可能是 andign.这不是同一回事.

以上所述是小编给大家介绍的JNI DeleteLocalRef的澄清,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25832.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。