On 2010-10-28, at 17:10, Hudson, Rick wrote:

> GC implementation
> Software stacks on multicores will need GCs to become increasingly concurrent 
> and latency free. Weak maps cause concurrent GCs and additional mutator 
> synchronizations.  While a concurrent GC already has to do some 
> synchronization, each additional synchronization point impedes scalability. 
> My concern is that the number of synchronization points might be proportional 
> to the number of <k, v> pairs in the weak maps (see below).

This is old information, but perhaps relevant.  Basically handling weak 
references in a standard hardware by emulating what a Lisp Machine would have 
done  [From http://bit.ly/b4xidb]

[...]

AWL has another special power: it enables better handing of barrier hits on 
weak objects. To explain the benefit we need to describe a problem first. The 
MPS uses a read-barrier to perform incremental garbage collection [@@ link to 
canned-for-client explanation of how a garbage collector works in broad terms]. 
When the client tries to read an object containing weak references the MPS may 
have protected it so that the MPS can process the object before the client gets 
to see it. The problem for weak objects is that the client may try and access 
the object at a point in the collection cycle when the MPS cannot yet determine 
the status of the objects that the weak object refers to. What the MPS does in 
this situation is assume that all the referenced objects are going to live. 
This assumption is correct but conservative; it may result in objects that are 
weakly referenced staying alive for longer than they need to. In the worst case 
this can result in a very large amount of memor
 y being used by objects that are no longer needed.

In order to combat this problem the MPS sometimes does the following: Instead 
of processing the entire weak object and unprotecting it so that the client can 
access the object the MPS may emulate the processor instruction. When this 
happens the MPS doesn't process the entire weak object, it only processes the 
exact location that was being accessed (typically a single word), it emulates 
the processor instruction, and it keeps the object protected. This happens 
invisibly from the client's perspective, it's exactly as if the instruction 
executed as normal. The MPS instead of processing the entire object processes 
just a single word.

[...]


_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to