我有一個很大的Mesh和MorphAnimMesh大場景。當網格被移除時,我想釋放內存。如果我知道這是最好的辦法:三js內存管理
for (var i = scene.children.length - 1; i >= 0 ; i --) {
var obj = scene.children[i];
scene.remove(obj);
obj.deallocate();
obj.geometry.deallocate();
obj.material.deallocate();
obj.material.map.deallocate();
}
如果我在此之後檢查任務管理器的內存使用情況,沒有任何變化。 (試圖等待GC幾分鐘,但沒有任何內容。)Google Chrome內存快照顯示仍在那裏的對象。形狀目標在THREE.Geometry @ 1862203等
試圖將obj設置爲null,但仍然沒有減少內存。
任何想法我做錯了什麼?
它的水平和玩家可以從一個變到另一個遊戲。幾次更改後,內存使用量增加到非常高的水平。這就是爲什麼我想在級別更改之前從內存中刪除所有對象。
試過這種被捕獲,但什麼都沒有改變。如果我在chrome對象中使用堆快照,則數組(例如:THREE.Geometry @ 1862203中的morphTargets)仍然存在,並且內存使用情況相同。 – user974250
也許您在某處持有網格,紋理或材質的參考? – Neil
關於這些例子的事情是他們不涉及紋理 –