我有这个代码:
function saveFile(str, part) {
var textFileAsBlob = new Blob([str], {type:"text/plain"});
var fileNameToSaveAs = "Parsed audio - part "+part;
var downloadLink = document.createElement("a");
downloadLink.download = fileNameToSaveAs;
downloadLink.innerHTML = "Download File";
if (window.URL != null)
{
// Chrome allows the link to be clicked
// without actually adding it to the DOM.
downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
}
downloadLink.click();
}
它工作正常,除了 Chrome 的这个问题:blob 的“足迹”或保存在 Chrome 主进程内存中的任何内容。当下载窗口打开时,整个 blob(在我的例子中为 250MB!)被复制到主进程的内存中。这有点糟糕,因为如果我保存多个文件,我最终会将内存填充到 750MB,此时 chrome 会停止下载文件并出现“未找到”错误。图片:https://i.stack.imgur.com/j5PUn.jpg https://i.stack.imgur.com/j5PUn.jpg
我是犯了一些愚蠢的错误还是 Chrome 的错?我可以清理 Chrome 的内存来解决这个问题吗?
As 我的评论 https://stackoverflow.com/questions/29878506/#comment47881112_29878506似乎是您正在寻找的答案,我已将其作为实际答案
你没有释放blob URL点击后,这意味着GC无法摆脱blob
// after the click
URL.revokeObjectURL(downloadLink.href);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)