- From: Bronislav Klučka <Bronislav.Klucka@bauglir.com>
- Date: Thu, 29 Mar 2012 09:56:23 +0200
- To: public-webapps@w3.org
On 29.3.2012 9:29, Darin Fisher wrote:
> I've never been terribly happy with createObjectURL and the
> requirement for
> folks to remember to call revokeObjectURL. I really like that we're
> talking
> about ways to minimize this pain :-)
>
> I noticed the WeakRefs proposal:
> http://wiki.ecmascript.org/doku.php?id=strawman:weak_refs
>
> It also makes use of the micro-task concept, and it does so to avoid
> revealing
> details about garbage collection.
>
> What if we were to adopt a similar approach here. Instead of
> introducing a
> second parameter to createObjectURL, what if createObjectURL returned a
> WeakObjectURL object instead of a String object? WeakObjectURL could
> be converted to a String to reveal the Blob URL.
>
> Suppose WeakObjectURL if retained would keep the Blob URL valid. Else,
> when WeakObjectURL gets deleted, its Blob URL would remain alive up
> until the next micro-task.
>
> Crazy idea? Too crazy?
>
> I agree that it is valuable to define "dereference" points for APIs
> that receive
> Blob URLs.
>
> -Darin
So the WeakObjectURL would exists as long as Blob exists?
//so this function will automatically GC Blob, URL object and the url
string itself would be reference to 'nothing' (since blob does not
exists anymore)?
function fileInputOnChange()
{
var blob = this.files[0];
var url = blob.getWeakObjectURL();
document.getElementById('firstImage').src = url;
this.parentNode.removeChild(this);
}
//so this function will not automatically GC Blob nor URL object and the
url string will be still pointing to that Blob?
var blob = MyGlobalFiles[0];
loadBlob(blob)
function loadBlob(blob)
{
var url = blob.getWeakObjectURL();
document.getElementById('firstImage').src = url;
}
//and when I remove any reference to that blob, all will be GC and
invalidated?
MyGlobalFiles.shift();
that sounds interesting and probably like one of the best idea in this
long discussion....
Brona
Received on Thursday, 29 March 2012 07:56:49 UTC