Освобождение прямой буферной собственной памяти в Java для JOGL

Я использую прямые буферы (java.nio), чтобы хранить информацию вершины для JOGL. Эти буферы являются большими, и они заменяются несколько раз во время срока действия приложения. Память не освобождена вовремя, и у меня заканчивается память после нескольких замен.

Кажется, что нет хорошего способа освободить буферные классы java.nio использования. Мой вопрос - это:

Есть ли некоторый метод в JOGL для удаления Прямых Буферов? Я изучаю glDeleteBuffer (), но кажется, что это только удаляет буфер из памяти видеокарты.

Спасибо

14
задан sparrow400 16 August 2010 в 19:18
поделиться

2 ответа

Прямые буферы сложны и не имеют обычных гарантий сборки мусора - подробнее см .: http: // docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html#direct

Если у вас возникли проблемы, я бы предложил выделить один раз и повторно использовать буфер, а не выделять и освобождать повторно .

3
ответ дан 1 December 2019 в 13:21
поделиться

Деаллокация прямого буфера - это работа, выполняемая сборщиком мусора через некоторое время после пометки объекта ByteBuffer.

Вы можете попробовать вызвать gc сразу после удаления последней ссылки на ваш буфер. По крайней мере, есть шанс, что память будет освобождена немного быстрее.

0
ответ дан 1 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: