2014-01-18 2 views
5

В современных браузерах можно выделить большой объект как Blob, а затем запросить доступ к нему через URL-адрес. Этот URL-адрес будет обслуживать сохраненный объект (например, данные изображения) в другом месте браузера.Когда объекты JavaScript Blob собраны?

Как узнать обозреватель, когда этот URL больше не нужен, и соответствующие данные Blob бесплатны для сбора мусора?

+0

Ответ, приведенный ниже, фактически не относится к сборке мусора, который удаляет выделенные объекты из * памяти *, но для освобождения дискового пространства. Если вас интересуют подробности сбора мусора, вы можете изучить: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management – Maus

+1

@Maus, Спасибо за ссылку. На мой взгляд, сборщик мусора отвечает за очистку любого ресурса, который больше не нужен. Кроме того, диск по-прежнему является памятью и часто используется как расширение ОЗУ (виртуальная память). Браузер/ОС может решить, сохраняется ли blob в рабочем наборе процесса или на диске. –

ответ

6

Браузер со временем очистит этот ресурс, однако может быть некоторое время (часы или дни), прежде чем он будет удален из памяти/диска.

Если вы хотите явно удалить объект, вы можете сделать это через revokeObjectURL.

var blob = new Blob([/*JPEG data*/], {type: "image/jpeg"}), 
    url = (window.URL || window.webkitURL), 
    objectUrl = url.createObjectURL(blob); 

// use the object URL, eg: 
var img = new Image(); 

img.onload = function() 
{ 
    // release the object URL once the image has loaded 
    url.revokeObjectURL(objectURL); 
}; 

// trigger the image to load 
image.src = objectURL; 
Смежные вопросы