>>>>> "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