N
Naresh Agarwal
Hi
I am writing a JNI application to call a C++ code from Java.
In JNI code, I'm creating a Java String from char* using NewStringUTF
and then calling ReleaseStringUTFChars on this string.
However, my program crashes on ReleaseStringUTFChars.
Should we call ReleaseStringUTFChars on strings created using
NewStringUTF to indicate JVM to garbage collect these strings?
Code is as follows:
----------
Java Class
----------
public class Test {
public void getStringBuffer(StringBuffer sb)
{
return _getStringBuffer(sb);
}
private native _getStringBuffer(StringBuffer sb)
}
--------
JNI Code
--------
JNIEXPORT jint JNICALL Java_Test_getStringBuffer
(JNIEnv *env, jobject, jobject sb)
{
const char *data = //get a C++ api to get data
// create a Java String with this data
jstring strData = env->NewStringUTF(data);
// Call "append" method of StringBuffer
// append_mid is method id for "append"
env->CallObjectMethod(sb, append_mid, strData);
env->ReleaseStringUTFChars(strData, data); // CODE CRASHES HERE
}
thanks & regards,
Naresh
I am writing a JNI application to call a C++ code from Java.
In JNI code, I'm creating a Java String from char* using NewStringUTF
and then calling ReleaseStringUTFChars on this string.
However, my program crashes on ReleaseStringUTFChars.
Should we call ReleaseStringUTFChars on strings created using
NewStringUTF to indicate JVM to garbage collect these strings?
Code is as follows:
----------
Java Class
----------
public class Test {
public void getStringBuffer(StringBuffer sb)
{
return _getStringBuffer(sb);
}
private native _getStringBuffer(StringBuffer sb)
}
--------
JNI Code
--------
JNIEXPORT jint JNICALL Java_Test_getStringBuffer
(JNIEnv *env, jobject, jobject sb)
{
const char *data = //get a C++ api to get data
// create a Java String with this data
jstring strData = env->NewStringUTF(data);
// Call "append" method of StringBuffer
// append_mid is method id for "append"
env->CallObjectMethod(sb, append_mid, strData);
env->ReleaseStringUTFChars(strData, data); // CODE CRASHES HERE
}
thanks & regards,
Naresh