我有一個問題困擾了我一段時間。使用THREE.JS對象的全局數組的Javascript內存管理
我正在使用three.js webgl庫來渲染具有許多紋理和網格的大場景。
這個問題不一定綁定到webgl,而是更多的javascript數組和內存管理。
我基本上是這樣:
var modelArray = [];
var model = function(geometry,db_data){
var tex = THREE.ImageUtils.loadTexture('texture.jpg');
var mat = new THREE.MeshPhongMaterial({map:tex})
this.mesh = new THREE.Mesh(geometry,mat);
this.db = db_data;
scene.add(this.mesh);
};
function loadModels(model_array){
for(i=0;i<geometry.length;i++){
modelArray.push(new model(model_array[i]['geometry'],model_array[i]['db_info']));
}
}
loadModels();
我是不是低效這裏?自從我將網格加載到場景和數組後,我基本上將使用的內存量加倍。或者數組中的模型(特別是model.mesh)對象是否只指向一個單獨的內存塊?
我應該只是創建一個mesh ID的數組並引用場景對象,或者可以將網格添加到場景和數組嗎?
在此先感謝,我希望我足夠清楚。
您是爲了重構還是遇到性能問題或內存問題? – alex
對於每個型號,我的內存使用量都呈指數級增長。不僅gpu內存,而且瀏覽器標籤內存只是看起來很高。這就是爲什麼。我仍然好奇地看到,如果將對象分配給數組是一種嚴重的內存命中,還是僅僅創建了一個非常大的(在這種情況下爲mesh)對象的引用。 – Hobbes
我遇到了與通過刷新分配內存持久性相關的主題內存問題,我認爲這是不可能的。 – Hobbes