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

