如何解决JNI中的内存泄漏
我用JNI开发了一个Cpp库。 CPP库具有一些函数,我可以通过这些函数将java中的字符串数组和数字数组传递给它们。不幸的是,当我运行整个程序时,进程的内存使用量正在增加,并最终被杀死。我使用以下函数将字符串Array,nums Array从Java转换为C格式。我还将函数中的字符串返回给Java。
我想知道以下功能中是否存在内存泄漏
myVector<string> getCStringFromJavaString(jobjectArray msgWordsStrArray,JNIEnv *env){
int stringCount = env->GetArrayLength(msgWordsStrArray);
myVector<string> msgWordsArray;
for (int i=0; i<stringCount; i++) {
jstring orig = (jstring) (env->GetObjectArrayElement(msgWordsStrArray,i));
const char *rawString = env->GetStringUTFChars(orig,0);
msgWordsArray.push_back(rawString);
env->ReleaseStringUTFChars(orig,rawString);
}
return msgWordsArray;
}
myVector<myDouble> getMyDoubleFromJavaDouble(jdoubleArray numsArray,JNIEnv *env){
int numsCount = env->GetArrayLength(numsArray);
myVector<myDouble> N;
double *numsArrayCStyle = env->GetDoubleArrayElements(numsArray,0);
for(int i = 0;i < numsCount; i++ ){
double orig = numsArrayCStyle[i];
myDouble origMyDouble(orig);
N.push_back(origMyDouble);
}
env->ReleaseDoubleArrayElements(numsArray,numsArrayCStyle,JNI_ABORT);
return N;
}
jstring getJStringFromCString(string cstring,JNIEnv *env){
return env->NewStringUTF(cstring.c_str());
}
PS:myDouble,myVector是模仿向量的类,在cpp中为double。它们中没有内存泄漏
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。