【发布时间】:2016-09-01 11:01:36
【问题描述】:
我在客户端中创建了巨大的 blob,用户可以将其下载为文件。
下面的例子只是为了演示这个问题
var x= "sdfslkdfjklsdjiflskdflsdf" ; for(var i = 0; i<19;i++) x=x+x
var blob = new Blob([x,x,x,x,x,x,x,x,x,x,x,x,x], {
type : "text/plain"
});
这会占用大量内存。当我完成 blob 后,我想释放该内存。 (我正在 IE11 Edge 中测试这个)
运行此脚本两次将失败,因为无法分配更多内存
我已经尝试设置blob = null或使用delete blob,内存没有任何反应。
如何释放内存?
【问题讨论】:
-
你可以试试“delete blob;”
-
所有答案都是正确的。 Javascript 是垃圾收集的,所以这些是你最好的选择。如果您想更好地控制内存,请切换到服务器端实现并使用非托管代码。不过,要为各种地狱做好准备。
-
如果您曾经使用过
URL.createObjectURL()方法,请记住在您不再需要对象url 时也调用URL.revokeObjectURL(),否则这将发生在您的记忆中,并且不会被GCed。 -
@Kaiido 即使您只将代码粘贴到控制台中,问题仍然存在
-
@Kaiido 我尝试运行脚本然后硬刷新(ctrl+F5),内存仍然被分配。唯一有效的方法是关闭 IE。 (提醒一下我实际上正在运行 IE11 Edge)
标签: javascript internet-explorer memory internet-explorer-11