5
최신 브라우저에서는 큰 개체를 Blob
으로 할당 한 다음 URL을 통해 액세스를 요청할 수 있습니다. 이 URL은 브라우저의 다른 곳에 저장된 이미지 (예 : 이미지 데이터)를 제공합니다.JavaScript Blob 객체는 언제 가비지 수집됩니까?
브라우저가이 URL이 더 이상 필요 없으며 해당 Blob
데이터를 가비지 수집 할 수 있는지 어떻게 알 수 있습니까?
최신 브라우저에서는 큰 개체를 Blob
으로 할당 한 다음 URL을 통해 액세스를 요청할 수 있습니다. 이 URL은 브라우저의 다른 곳에 저장된 이미지 (예 : 이미지 데이터)를 제공합니다.JavaScript Blob 객체는 언제 가비지 수집됩니까?
브라우저가이 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;
아래의 대답은 할당 된 개체를 메모리에서 제거하지만 디스크 공간을 확보하는 가비지 수집과 관련이 없습니다. 가비지 수집에 대한 자세한 내용을 보려면 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management – Maus
@Maus, 조사해보십시오. 내 생각에 가비지 컬렉터는 더 이상 필요하지 않은 리소스를 정리할 책임이 있습니다. 또한 디스크는 여전히 메모리이며 RAM (가상 메모리)의 확장으로 종종 사용됩니다. 브라우저/OS는 BLOB가 프로세스의 작업 세트에 저장되는지 또는 디스크에 저장되는지 여부를 자유롭게 결정합니다. –