2014-09-06 218 views
1

我試圖用URL.createObjectURL顯示圖像。但是,它需要很多內存,大約是圖像大小的10倍。 這裏是我的代碼:URL.createObjectURL導致內存泄漏

var image = new Image(); 
image.src = URL.createObjectURL(blob); 
image.className = 'images'; 
image.onload = function(){ 
    URL.revokeObjectURL(this.src); 
}; 
$('.images').appendTo('body'); 

這是一個瀏覽器錯誤?或者我的代碼有問題?

+0

尺寸差異是否可能由最終數據的編碼 - Url引起? – TGlatzer 2014-09-06 09:06:32

+0

@ Grumbler85我不明白你的觀點。我的變量blob是通過輸入文件元素接收的本地圖像。 – user3925697 2014-09-06 09:13:11

+0

@ user3925697你是如何認識到10倍的差距?我可否知道? – 2017-02-08 11:56:36

回答

4

實際上,如果您有明確卸載它們的安全時間,則在通過調用window.URL.createObjectURL()釋放之前創建的現有對象URL時,請致電URL.revokeObjectURL()以獲得最佳性能和內存使用情況。

但是,您不能通過創建對象來節省內存,請閱讀此answer和此helper link

+0

感謝您的鏈接。順便說一句,你的意思是這是一個瀏覽器錯誤? – user3925697 2014-09-06 09:25:23

+0

是的,瀏覽器可能會在未來解決這個問題:) – 2014-09-06 20:49:04