Out of memory problem

Boehm, Hans hans_boehm@hp.com
Thu Jun 27 15:27:00 GMT 2002


This doesn't look right to me, either.  I'll try to look at it as well.

This is a fairly pessimal test case for gcj, since "small" objects are allocated in 4K chunks.  You'll only be able to fit 3 1024 byte arrays in a chunk, thus wasting nearly a quarter of the space.  But that still doesn't explain what's going on here.

I don't think the collector should fail just because it tried to expand past the maximum heap size.  It should try to make do with less instead.  Thus GC_free_space_divisor shouldn't have a significant impact, though it would be interesting to know whether it does.

Hans 

> -----Original Message-----
> From: Jeff Sturm [mailto:jsturm@one-point.com]
> Sent: Thursday, June 27, 2002 12:59 PM
> To: Suresh Raman
> Cc: java@gcc.gnu.org
> Subject: Re: Out of memory problem
> 
> 
> On Thu, 27 Jun 2002, Suresh Raman wrote:
> > But, when I limit the maximum heap size of the program to 
> 4MB* and run
> > the same program again, I get "Warning: Out of Memory!  Returning
> > NIL!" errors.   It happens nearly everytime during the 768th pass in
> > the loop.  The total heap memory is almost at 4M and the free heap
> > memory is at 0, when the error happens.  Given that the program does
> > not use more than 2MB at any time, I expect it to run without any
> > problems within 4MB.  This is unfortunately not the case.
> 
> I'm not quite sure why the explicit GC would help you, since 
> the collector
> will attempt a full collection anyway if it cannot grow the heap.
> 
> For tuning the collector I've found it helpful to build 
> without -DSILENT,
> and you might also arrange to call GC_dump() at the point of failure.
> That'll help to understand what decisions the collector is making.
> 
> Also see the documentation for GC_free_space_divisor.  
> Increasing this can
> limit heap growth to some extent.
> 
> Jeff
> 



More information about the Java mailing list