私が書いたCADソフトウェアがあります。描画される各コンポーネントには、頂点バッファオブジェクトのセットがあります。私は時々SIGSEVとJVMがクラッシュを取得しかしJVML、頂点バッファオブジェクトを使用してJVMがクラッシュし、ファイナライズメソッドでvboを解放しようとしています
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);
}
}
}
:コンポーネントが削除される場合は、私のようなfinalizeメソッドで頂点バッファオブジェクトを解放しなければなりません。 hs_errログファイルはgl.glIsBufferArb(tmp.intValue())を指しています。
私のglオブジェクトはもはや有効ではないと思いますか?
私はまだ有効だと思います。プログラムはまだクラッシュするまで動作していました。 GLオブジェクトへの参照を格納せずにglbufferを解放する方法はありますか?
ありがとうございました!
これは素晴らしい提案です。ありがとうございます! – vextorspace