JNI creación de objetos y gestión de memoria

Tengo el siguiente método JNI que crea una colección de objetos Java de forma nativa y luego los devuelve a Java:

JNIEXPORT jobject JNICALL Java_com_test_myClass_myMethod(JNIEnv * env, jclass klass) {
    jclass arrayClass = env->FindClass("java/util/ArrayList");
    jmethodID initMethod = env->GetMethodID(arrayClass, "<init>", "()V");
    jmethodID addMethod = env->GetMethodID(arrayClass, "add", "(Ljava/lang/Object;)Z");
    jobject myArray = env->NewObject(arrayClass, initMethod);

    env->CallBooleanMethod(myArray, addMethod, env->NewStringUTF("Hello"));
    env->CallBooleanMethod(myArray, addMethod, env->NewStringUTF("World"));

    return myArray;
}

¿Necesito liberar los objetos creados en el código nativo, o el GC lo hace automáticamente? Si lo hago, ¿cómo lo hago, ya que necesito devolverlo a Java?

Respuestas a la pregunta(2)

Su respuesta a la pregunta