У меня есть несколько программ CAD, которые я написал.Каждый рисуемый компонент имеет набор объектов буфера вершин.Если компонент удаляется, мне нужно освободить объекты буфера вершин в методе финализации, таком как:
if (gl != null) {
Integer[] keys = vbos.keySet().toArray(new Integer[0]);
for (int i = 0; i < keys.length; i++) {
Integer tmp = keys[i];
if (tmp != null) {
if (gl.glIsBufferARB(tmp.intValue()));
gl.glDeleteBuffersARB(1, new int[]{tmp.intValue()}, 0);
}
}
}
, однако иногда я получаю сбой SIGSEV и JVM.Файл журнала hs_err указывает на gl.glIsBufferArb (tmp.intValue ()).
Полагаю, это означает, что мой объект gl больше не действителен?
Думаю, он должен был быть действительным.Программа все еще работала вплоть до сбоя.Есть ли способ освободить glbuffer без сохранения ссылки на объект GL?
Спасибо!