【问题标题】:Javascript - File saved to disk is stuck in Chrome's memoryJavascript - 保存到磁盘的文件卡在 Chrome 的内存中
【发布时间】:2015-04-26 13:53:38
【问题描述】:

我有这个代码:

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 会停止下载文件并出现“未找到”错误。图片:http://i.stack.imgur.com/j5PUn.jpg

我是在犯一些愚蠢的错误还是这是 Chrome 的错?我可以清理 Chrome 的内存来解决这个问题吗?

【问题讨论】:

  • 你没有在点击后释放blob URL,这意味着GC无法摆脱blob
  • ^ 谢谢,现在可以正常使用了。

标签: javascript google-chrome blob file-not-found


【解决方案1】:

由于my comment 似乎是您正在寻找的答案,我已将其作为实际答案


您没有在点击后释放 blob URL,这意味着 GC 无法摆脱 blob

// after the click
URL.revokeObjectURL(downloadLink.href);

【讨论】:

    猜你喜欢
    • 2016-11-23
    • 2014-05-17
    • 2016-07-22
    • 2013-12-19
    • 2010-09-23
    • 2010-11-08
    • 2017-11-19
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多