>>>>> "H" == H Yamamoto <ocean / m2.ccsnet.ne.jp> writes: H> Because rb_gc_mark_locations marks all objects in the range of STACK_END to rb_gc_stack_start. H> if GC.start runs inside block, block needs more stack, so more objects can be wrongly H> marked as alive. (As you can see, last `pause` is outside of block, so less stack is used, H> huge array goes out of stack range, it is freed) Yes this is what it do. Now try it with 1.6.8 and you'll have a surprise :-) Strange to see something that I've predicted but I *really* expected to see it in another way : ruby is faster but it use more memory :-) Guy Decoux