On 11/02/2013 10:24 AM, Allen Wirfs-Brock wrote:
> 
> On Nov 1, 2013, at 3:17 PM, Jason Orendorff wrote:
> 
>> On 11/1/13 1:52 PM, David Bruant wrote:
>>> In any case, I've stopped being against weakrefs after a message by
>>> Mark Miller[...]
>> I am now going to try to convince you that you shouldn't have been
>> convinced by this use case. :)
>>
>>> To keep the object granularity across machines, in E, they've created
>>> a protocol (CapTP) that, in essence, streches object references across
>>> machines. Cross-machine wrappers if you will.
>>> When designing this protocol, at some point comes the problem of GC.
>>> Distributed GC...
>>
>> First, read Terrence's first response in this thread. This is exactly
>> the kind of use case he is talking about, where GC is used as a general
>> resource-management workhorse.
> 
> My experience is that Terrence is absolutely correct in this regard and that 
> this position is share by virtually all experienced GC implementors. A former 
> colleague of mine, George Bosworth, expressed it this way in an experience 
> report at a ISMM a number of years ago:
> 
> A modern GC is a heuristics-based resource manager.  The resources it manages 
> generally have very low individual value (a few dozen bytes of memory) and 
> exist is vast numbers.  There is a wide distribution of life-times of these 
> resources, but the majority are highly ephemeral.  The average latency of 
> resource recovery is important but the recovery latency of any individual 
> resource is generally unimportant. The heuristics of a great GC take all of 
> these characteristics into accounts.  When you piggy-back upon a GC  (via 
> finalization, or equivalent mechanism) the management of a different kind of 
> resource you are applying the heuristic of memory resource manegment to the 
> management of the piggy-backed resources. This is typically a poor fit.  For 
> example, the piggy-backed resource may be of high individual value and exist 
> in limited numbers (George's used file descriptors as an example).  A good GC 
> will be a bad resource manager for such resources.
> 
> There are many types of resources that need to be managed in complex systems. 
> Thinking that a GC will serve as a good management foundation for most of 
> those resources is just naive. 

Thank you! That was exactly what I wanted to express, only with greater
pith and fewer words.

> I previously made some other comments that relate to this issue at 
> http://wiki.ecmascript.org/doku.php?id=strawman:weak_refs#allen_wirfs-brock_20111219
>  In particular, see the "backstop" discussion.
> 
>>
>> I'm not convinced acyclic distributed GC is a good thing to support.
>>
>> The idea is that by the magic of proxies, remote objects can be made to
>> look exactly like local objects. But then, you can't freely pass a local
>> object as an argument to a remote method. That would create a back edge.
>> The system must either block that with a runtime error or risk a cycle—a
>> silent memory leak on both sides of the boundary. So the boundary is not
>> transparent after all.
>>
>> The transparency doesn’t extend to performance or ease of use anyway.
>>
>> Sidebar: I think general distributed GC (with cycles) is considered
>> Hard. It's been studied. Mark would know better than me. But I think it
>> requires, at a minimum, a lot more cooperation from the GC, including
>> abstraction-busting APIs that we cannot safely expose (like those
>> Gecko's cycle collector uses to trace through the JS heap).
> 
> Yes, indeed. And there is a lot of experience that fully transparent 
> distributed object graphs are not a very good idea.  The dream was that an 
> application could ignore distribution boundaries. In practice you always want 
> to know when you are about to traverse a highly latency reference rather than 
> a normal essentially 0 latency reference.
>
> Allen
> _______________________________________________
> dev-tech-js-engine-internals mailing list
> dev-tech-js-engine-internals@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals
> 

_______________________________________________
dev-tech-js-engine-internals mailing list
dev-tech-js-engine-internals@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to