私自身、この質問に長い間悩まされ、chrome と Three.js でバグ レポートを上げましたが、解決策を見つけることができませんでした。
何らかの理由で、長時間経ってもメモリが解放されず、何かがメモリ ブロックを指し続けているように見えるため、ガベージ コレクタがメモリを解放しません。
しかし、これが私にとってトリックをしたものです
- シーンに追加されたすべてのアイテムを保持する配列を作成します。
- シーンにアイテムを追加するときはいつでも、この配列に追加してください。
- destroy 関数で、scene.remove('item name') を実行してシーンから削除します。
- 配列を繰り返し処理し、すべての項目を手動で未定義にします。
このようにして、Three.js シーンから 600MB 以上の RAM を要求することができました。
アップデート
Doob 氏と WestLangley 氏による回答three.js と多くの shape でメモリ リークが発生しました。コードでこれをまだテストしていません。
webGLRenderer でメッシュを削除した後、
scene.remove( mesh )
、
でメモリの割り当てを解除できます
renderer.deallocateObject( mesh );
でテクスチャの割り当てを解除できます
renderer.deallocateTexture( texture );