【发布时间】:2018-11-30 19:30:24
【问题描述】:
我们有一个非常复杂的网络场景,我们在其中动态加载非常复杂的 .obj 和 .mtl 文件。 在将没有任何这些对象的场景与内部有多个对象的场景进行比较后,我们注意到了一种奇怪的行为:
firefox 内存堆显示大部分内存(>100MB 用于 5 个对象)用于 JSStrings。其余的内存用于对象,当我们在其中有复杂的对象文件时,这是不言自明的。
但是为什么会有大量的字符串,我们能减少它吗? AFrame 是否将 .obj 文件的内容转换为字符串?
我们考虑过最小化 .obj 文件本身并减少顶点。也许你们当中有人有类似的经历和/或可以给我们建议如何解决这个问题。
提前谢谢你:-)
【问题讨论】:
-
它必须获取并加载原始 OBJ 文件(作为文本),它是一个字符串。然后它解析为对象。 OBJ/MLT 文件有多大?
-
我们的文件大小在 1 到 50 MB 之间
-
是的,那是唐的回答。您看到的内存是获取并缓存的模型文件的文本(然后对其进行解析)。您可以尝试从three.js 网络缓存中释放内存。 (
delete THREE.Cache.files['someurl']) -
是的,我认为转换是唯一真正的选择。不过你的删除方法看起来也很有趣,我试试看,谢谢!
标签: javascript web memory three.js aframe