JavaScript Blob对象何时被垃圾收集?

JavaScript Blob对象何时被垃圾收集?,javascript,html,garbage-collection,blob,Javascript,Html,Garbage Collection,Blob,在现代浏览器中,可以将大型对象分配为Blob,然后通过URL请求访问。此URL将为浏览器中其他位置的存储对象(如图像数据)提供服务 浏览器如何知道何时不再需要此URL,以及相应的Blob数据是否可以免费进行垃圾收集?浏览器最终将清除此资源,但可能需要一段时间(数小时或数天)才能将其从内存/磁盘中删除 如果希望显式删除对象,可以通过revokeObjectURL执行此操作 var blob = new Blob([/*JPEG data*/], {type: "image/jpeg"}),

在现代浏览器中,可以将大型对象分配为
Blob
,然后通过URL请求访问。此URL将为浏览器中其他位置的存储对象(如图像数据)提供服务


浏览器如何知道何时不再需要此URL,以及相应的
Blob
数据是否可以免费进行垃圾收集?

浏览器最终将清除此资源,但可能需要一段时间(数小时或数天)才能将其从内存/磁盘中删除

如果希望显式删除对象,可以通过
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;

下面的答案实际上与从内存中删除已分配对象的垃圾收集无关,而是与释放磁盘空间有关。如果你对垃圾收集的细节感兴趣,你可以调查:@Maus,谢谢你的链接。在我看来,垃圾收集器负责清理任何不再需要的资源。此外,磁盘仍然是内存,通常用作RAM(虚拟内存)的扩展。浏览器/操作系统可以自由决定blob是存储在进程的工作集中,还是存储在磁盘上。