Javascript—保存到磁盘的文件卡在Chrome';记忆

Javascript—保存到磁盘的文件卡在Chrome';记忆,javascript,google-chrome,blob,file-not-found,Javascript,Google Chrome,Blob,File Not Found,我有以下代码: 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;

我有以下代码:

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停止下载带有“未找到”错误的文件。图片:

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

正如您所寻找的答案一样,我把它作为一个实际的答案


单击后您没有释放blob URL,这意味着GC无法清除blob


单击后您没有释放blob URL,这意味着GC无法摆脱blob^谢谢,它现在可以正常工作了。
// after the click
URL.revokeObjectURL(downloadLink.href);