Я использую прямые буферы (java.nio), чтобы хранить информацию вершины для JOGL. Эти буферы являются большими, и они заменяются несколько раз во время срока действия приложения. Память не освобождена вовремя, и у меня заканчивается память после нескольких замен.
Кажется, что нет хорошего способа освободить буферные классы java.nio использования. Мой вопрос - это:
Есть ли некоторый метод в JOGL для удаления Прямых Буферов? Я изучаю glDeleteBuffer (), но кажется, что это только удаляет буфер из памяти видеокарты.
Спасибо
Прямые буферы сложны и не имеют обычных гарантий сборки мусора - подробнее см .: http: // docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html#direct
Если у вас возникли проблемы, я бы предложил выделить один раз и повторно использовать буфер, а не выделять и освобождать повторно .
Деаллокация прямого буфера - это работа, выполняемая сборщиком мусора через некоторое время после пометки объекта ByteBuffer.
Вы можете попробовать вызвать gc сразу после удаления последней ссылки на ваш буфер. По крайней мере, есть шанс, что память будет освобождена немного быстрее.