Если вы говорите о памяти (и, соответственно, дескрипторах), выделенной в собственном коде, это выходит за рамки сборщика мусора JVM - с этим ничего нельзя поделать, так что вы сами по себе. Если вы не освободите память в нативном коде, когда закончите, она утечет.
Если вы имеете в виду объекты Java, через которые вы получаете доступ к нативному коду, это совершенно обычные объекты, которые будут собраны, когда они станут недоступными. Обратите внимание, что если вы закрепляете объекты Java в собственном коде (например, с помощью GetByteArrayElements
), вы также должны освобождать их (например, с помощью ReleaseByteArrayElements
).
Если ваш собственный код должен освободить ресурсы перед тем, как вы позволите Java-объекту работать, у Java-объекта должен быть некоторый метод dispose, который при вызове освобождает собственные ресурсы и делает недействительным Java-объект от дальнейшего использования. Просто вызовите метод dispose и отпустите ссылку на объект.
Еще раз, я не знаю, как выгрузить нативную библиотеку после загрузки.