William Djaja Tjokroaminata wrote:

> 1) When Ruby memory is dynamic, we don't need to use ALLOC to free memory
> periodically, because the garbage collector is already being called
> often by Ruby internals.  If we use ALLOC, then the garbage collector is
> called even more often, which may result in execution performance
> degradation.

Suppose your ruby code produces a large amount of garbage, but not 
enough to trigger GC, and then your C code takes over for a while and 
starts allocating. Unless you call back into ruby code or manually 
invoke ALLOC or GC, that amount of garbage is, in effect, deducted from 
the space your C code has to play with.