JavaでopenGLを使用する場合(joglなどのバインディングで)、メモリ管理について心配する必要はありますか? JVMは、作成されたOpenGLオブジェクトでガベージコレクションを行いますか?もしそうなら、クリーンアップにアプローチする最善の方法は何ですか?OpenGL、Java、メモリ管理
2
A
答えて
1
JOGLのようなOpenGLの下位レベルのバインディング(Java3Dのようなライブラリではあまりないかもしれません)では、glDelete
関数を呼び出すことで、テクスチャやバッファなどのリソースを自分で管理する必要があります。
OpenGLは、レンダリングのために必要なときに、ビデオメモリとの間でテクスチャを移動するようなことを行います。 JavaガベージコレクタがOpenGLに渡されるとJavaオブジェクトとして表されないため、これらのリソースを収集する実際的な方法はありません。はい、これは、OpenGLで使用されているリソースのリストを保持しなければならないことを意味します。
良いニュースは、おそらくあなたが考えているよりも多くのリソースをOpenGLに読み込むことができるということです。なぜなら、必要なときにビデオメモリにスワップし、必要でないときはメインメモリに戻すためです。悪い知らせは、この「スラッシング」なしでフレームをレンダリングするために使用できるリソースのサイズおよび数(例えば、テクスチャ)には依然として実際的な制限があるということです。
0
私はそれが所有権を実装する方法を選択する "接着剤"またはバインディングに少し依存していると思います。
一般に、バインディングはOpenGLセマンティクスに固執することが予想されます。つまり、JVMはOpenGLライブラリが保持するデータのガベージコレクションには関係しません。
多くの場合、たとえば。テクスチャのアップロード、私はこれが働くことができる唯一の方法だと思います。
関連する問題
- 1. Javaでのメモリ管理
- 2. Javaメモリ管理:iOSスタイルのメモリ監視?
- 3. Javaおよびメモリ管理のオブジェクトライフサイクル?
- 4. C++でのJavaスタイルのメモリ管理
- 5. Javaスレッドのメモリ管理の問題
- 6. Java - メモリ管理/ DB接続の質問
- 7. メモリ管理ios
- 8. CFSTRメモリ管理
- 9. メモリ管理addSubview:
- 10. iPhone:メモリ管理
- 11. UIViewメモリ管理
- 12. Netbeansメモリ管理
- 13. C#メモリ管理
- 14. CGMutablePathRefメモリ管理
- 15. UITableViewメモリ管理
- 16. アレイ、メモリ管理
- 17. MVC3メモリ管理
- 18. コアデータ - メモリ管理?
- 19. mipsメモリ管理
- 20. CPythonメモリ管理
- 21. iOSメモリ管理
- 22. OSメモリ管理
- 23. @properties - メモリ管理
- 24. AS3 - メモリ管理
- 25. ADBannerViewメモリ管理
- 26. iPhoneメモリ管理
- 27. ヒープスペース - メモリ管理
- 28. Rcppメモリ管理
- 29. 未管理オブジェクトのメモリ管理
- 30. C#(メモリ管理)の配列の管理