JNI fuite de mémoire à partir du tableau d'octets

J'ai un programme java qui appelle une fonction native de nombreuses fois. Mon problème est que cette fonction a une fuite de mémoire et tout ce que je faire pour se débarrasser de lui causer un vidage de la mémoire. Toute aide serait grandement appréciée.

C'est mon 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);

    //env->ReleaseByteArrayElements(byteArray, (jbyte*) finalSendArray, JNI_ABORT);

Mon problème est que le ci-dessus ^ code provoque un vidage de la mémoire si c'est sans commentaire, si ce n'est pas décommenté mon programme fonctionne de la mémoire en quelques minutes

    env->DeleteLocalRef(byteArray);
    delete[] finalSendArray;
    }
}

toute aide serait appréciée. Merci!

La libération de la byteArray d'abord, puis de les supprimer de la mémoire sous-jacente?
A ma réponse à résoudre votre problème? Marquer comme correcte si elle l'a fait. Pourquoi faites-vous cela en C? Ce n'getCommand faire? Pourrait-il être fait en java? jni est cher.
hey désolé il a fallu si longtemps pour une réponse, j'ai encore une fuite quelque part. Je ne sais pas où. Je suis à l'aide de c++ parce que je suis juste à la réutilisation de code qui a déjà été construit. Il pourrait être ré-écrit en Java, mais je préfère les garder dans la mise en œuvre.
Je souhaite que avait travaillé... mais il n'a malheureusement pas.
Désolé de l'entendre. Je ne sais pas vraiment; le seul conseil que je pourrais donner est de lire la JNI spec attentivement et assurez-vous de comprendre toutes les différentes durées de vie et les dépendances.

OriginalL'auteur Tyler Davis | 2013-09-06