What versions of Ruby have you tried?

I was able to duplicate this behavior only in ruby18.
ruby19 and ruby16 work fine.
 
             VMsize        Run Time
-----------------------------------
Ruby16    24MB          26sec
Ruby18   190MB         32sec
Ruby19    27MB          30sec

My guess is that something is calling malloc under the covers without going
through the ALLOC* macros.  The ALLOC_N, etc. wrappers check the total
bytes allocated and fire off a GC when it exceeds 8MB of so.
See the ruby_xmalloc() function in gc.c.

I'd be curious to know what you find.

Happy hunting,

- brent


Ron M-2 wrote:
> 
> Short summary:
>   * Some ruby scripts stay small (20MB) with GC.start
>     but grow very large (400MB) without.
>   * I would have expected ruby to do such garbage
>     collection automatically.
>   * 3 short test scripts shown that reproduce the
>     problem are below.
> 
> I find I have to force garbage collection using GC.start to keep
> some of my scripts from growing from 20MB (when I use GC.start)
> to 400+MB when I don't.  I'm quite sure I'm not hanging on to
> any references to large objects --- if only because explicit
> GC.start's stop the program from growing.
> 
> The first two programs below are the shortest test case
> I can make that show the problem.  Test program 1
> only differs from test program 2 in that the second
> one has GC.start in the loop.   The first one grows
> to over 400MB.  The second one stays under 25MB.
> 
> Is there a way I can tell Ruby to automatically run the
> garbage collector more frequently?
> 
> Also strange - it seems that stuff done outside the loop
> has a side effect that triggers the behavior.   In the third
> test script below I changed it to not call "flatten" outside
> the loop -- which seems to change the behavior of garbage
> collection in the loop.
> 
> ....
> 
> Any thoughts what I should do?
>   * keep calling gc from my loop?
>   * buy more memory?
>   * file a bug report somewhere?
> 
>    Ron
> 
> PS: This was discussed a bit on comp.lang.ruby earlier, and
> Eric Mahurin who suggested there may be a bug around
> rb_ary_splice and/or rb_str_buf_cat and provided more
> test cases.  That thread can be found here http://tinyurl.com/358zyw
> 
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Finding-I-need-explicit-%22GC.start%22-in-my-programs-to-prevent-extreme-growth.-tp14678178p14694908.html
Sent from the ruby-core mailing list archive at Nabble.com.