2015-04-26 25 views
3

我有這樣的代碼:使用Javascript - 保存到磁盤文件是停留在Chrome的內存

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:團塊的「足跡」或任何保存在Chrome的主要過程'記憶。當打開下載窗口時,整個blob(在我的情況下爲250MB!)被複制到主進程的內存中。這有點不好,因爲如果我保存多個文件,我最終會填充內存高達750MB,並在此時停止下載帶有「未找到」錯誤的文件。圖片:http://i.stack.imgur.com/j5PUn.jpg

我在做一些愚蠢的錯誤還是這個Chrome的錯?我可以清理Chrome的內存以擺脫此問題嗎?

+0

你不釋放點擊後_blob URL_,這意味着GC無法擺脫_blob_的 –

+0

^謝謝,它的工作原理道具現在好了。 – Amareth

回答

2

至於my comment似乎是您要尋找的答案,我已經把它作爲一個實際的答案


的點擊,這意味着GC之後你不會釋放BLOB URL無法擺脫的BLOB

// after the click 
URL.revokeObjectURL(downloadLink.href); 
相關問題