gpt4 book ai didi

c++ - JNI DeleteLocalRef 说明

转载 作者:可可西里 更新时间:2023-11-01 18:20:06 25 4
gpt4 key购买 nike

问题一:

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

问题二:

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() 都会创建一个新的本地引用。

本地引用将在本地方法返回时被 JNI 丢弃,但这个过程与 Java 垃圾回收无关。通常,我们不需要担心本地引用。但是本地引用表通常很小,因此我们必须丢弃在相当长的循环中创建的未使用的引用。

关于c++ - JNI DeleteLocalRef 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com