У нас есть понятие указателей в C ++. Теперь, если мы выделим некоторую память в C ++ и передадим ее Java в качестве ссылки на объект (с использованием JNI), тогда кто должен быть и кто будет освобождать ее.
Будет ли это
1.) Сборщик мусора сделает это автоматически в Java?
2.) Нам нужно явно выполнить удаление указателя в методе финализации обернутого класса JNI?
3. ) Или мы должны просто забыть finalize (поскольку финализаторам нельзя доверять), и Java несет ответственность за вызов кода C ++, который удаляет объект
4.) Или есть способ освободить память непосредственно в самой Java (не уверены, как Java представляет указатель C ++ для его удаления)?
Как лучше всего это сделать и наоборот (когда мы передаем объекты из Java в C ++)?