По первому вопросу C ++ будет выделять ресурсы, используя собственную среду выполнения, которая не имеет ничего общего с JVM - JVM не знает о каких-либо действиях в этом распределителе памяти.
Что касается второго вопроса, сборщик мусора Java не будет собирать память, выделенную C ++. Вы должны будете убедиться, что ваша обертка Java инициирует освобождение памяти. Перед тем как объект GC будет обработан java, среда выполнения вызывает метод finalize()
. По умолчанию один наследуется от java.lang.Object и в основном ничего не делает. Вы можете переопределить это и использовать его как ловушку, чтобы инициировать освобождение вашей памяти, управляемой вручную.