From: SASADA Koichi Date: 2013-04-29T22:41:12+09:00 Subject: [ruby-core:54695] Re: [ruby-trunk - Feature #8339][Open] Introducing Geneartional Garbage Collection for CRuby/MRI (2013/04/29 11:45), SASADA Koichi wrote: > (2013/04/29 2:19), Magnus Holm wrote: >> What exactly does "moving memory areas" mean? Do you have any links? > > This is pseudo code: > ary_push(VALUE ary, VALUE item) > { > old_size = RARRA_LEN(ary); > realloc(RARRAY_PTR(ary), old_size + 1); <- change memory area > RARRAY_PTR(ary)[old_size] = item; > RARRAY_SET_LEN(ary) = old_size + 1; > } Sorry, I assume only *parallel* tracing. (a tracing thread and a mutator thread conflict (GVL protected), for example, above code) But concurrent, realtime GC can be implemented (not parallel, synchronizing a tracing thread and a mutator thread). -- // SASADA Koichi at atdot dot net