Yes, I was thinking is such a thing. Each thread has a local heap and you have a common shared heap too, with shared data in it.

Is such a case, the flag is suffiscient because then the GC could handle that and trigger thread local heap allocation instead of shared one.

This is consistent with the swap friendliness I was talking about and can reduce the need of synchronization when allocating memory (a lock will only occur if the GC doesn't have any memory left in his pool for the given thread).

And solve finalization's thread, yes.

Le 03/10/2011 22:54, Sean Kelly a écrit :
On Oct 3, 2011, at 12:48 PM, deadalnix wrote:

There's another important issue that hasn't yet been addressed, which is that 
when the GC collects memory, the thread that finalizes non-shared data should 
be the one that created it.  So that SHARED flag should really be a thread-id 
of some sort.  Alternately, each thread could allocate from its own pool, with 
shared allocations coming from a common pool.  This would allow the lock 
granularity to be reduced and in some cases eliminated.

I'd like to move to CDGC as an intermediate step, and that will need some 
testing and polish.  That would allow for precise collections if the compiler 
support is added.  Then the thread-local finalization has to be tackled one way 
or another.  I'd favor per-thread heaps but am open to suggestions and/or help.

Reply via email to