我目前在使用ThreeJS应用程序时遇到内存问题。
我知道有关此问题的几个问题:
我做使用我制作的以下打字稿功能处理我的对象:
__directGeometry
但是,当我使用Chrome Dev Tools堆积快照时,我仍然有大量的数据:
geometry
,...)faces
中的顶点,faces
中的法线,geometry
中的vertexColors,...)__directGeometry
)attributes
中的颜色,...)geometry
的{{1}},...)由于内存中的所有数据,我的应用程序被iOS上的Jetsam杀死,请参阅:Jetsam kills WebGL application on iOS
我怀疑当我要求时,库中的某些数据没有被释放。
答案 0 :(得分:0)
尝试处理所有事情。我正在使用这个片段一段时间。它处理材料,纹理,3d对象。它遍历数组和普通对象。
let dispose = function(o) {
try {
if (o && typeof o === 'object') {
if (Array.isArray(o)) {
o.forEach(dispose);
} else
if (o instanceof THREE.Object3D) {
dispose(o.geometry);
dispose(o.material);
if (o.parent) {
o.parent.remove(o);
}
dispose(o.children);
} else
if (o instanceof THREE.Geometry) {
o.dispose();
} else
if (o instanceof THREE.Material) {
o.dispose();
dispose(o.materials);
dispose(o.map);
dispose(o.lightMap);
dispose(o.bumpMap);
dispose(o.normalMap);
dispose(o.specularMap);
dispose(o.envMap);
} else
if (typeof o.dispose === 'function') {
o.dispose();
} else {
Object.values(o).forEach(dispose);
}
}
} catch (error) {
console.log(error);
}
};