I have a java program that calls a native function many times. My problem is that this function has a memory leak, and everything I do to get rid of it causes a memory dump. Any help would be greatly appreciated.
This is my code.
JNIEXPORT void JNICALL Java_class_method_getInput (JNIEnv *env, jobject obj) { if (inputIsAvailable) { int size = getBufferCurrentIndex(); size -= getBufferReadIndex(); size *= 2; char *finalSendArray = new char[size]; getCommand(finalSendArray); jbyteArray byteArray = env->NewByteArray(size / 2); env->SetByteArrayRegion(byteArray, 0, size / 2, (jbyte*) finalSendArray); while(methodID == 0) { jclass cls = env->GetObjectClass(obj); methodID = env->GetMethodID(cls, "setCommand", "([B)V" ); } env->CallVoidMethod(obj, methodID, byteArray);
My problem is that the code above causes a memory dump, if it is uncommented, if it is not uncommented, my program runs out of memory in minutes
env->DeleteLocalRef(byteArray); delete[] finalSendArray; } }
Any help would be appreciated. Thanks!
source share