This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Controlling the garbage collector (GC) at RT?


Hi,

And in relation to that thread, what is the effect of adjusting
GC_free_space_divisor? (Maybe I should take that back in the old thread)
The GC sets up memory pools of different sized objects. If you have the divisor set too low in conjunction with a limited maximum heap size you can run into a situation where there are many of these pools that have some free space in them, but there is no memory left to expand the pool of a pool for a given size object. The result is an OutOfMemoryError even though the total space taken up by reachable objects is significantly smaller than the total available memory.
Auch... I certainly don't want that, no. And I do have the specific situation with only a limited maximum heap.

However, if I just got an OOM I would be able to "handle" it somehow. But unfortunately my Linux terminates my application in the attempt to grow the heap size beyond the physical possible.
(Do you recall our similar discussion http://gcc.gnu.org/ml/java/2004-11/msg00130.html :-)


So ofcourse setting the GC_free_space_divisor as both you and Hans suggest, would circumvent some/many of the OOM I could encouter.

But it would also be really nice if I could, somehow, control the heap-increase-size (factor). It seems to be 1.33 today:

heap_last_increase_size *= 1.33;
heap_size += heap_last_increase_size;

I would like to specify an initial "heap_last_increase_size", and then an increase-factor of 1.0.
That way, I wouldn't have to specify the "GC_..._HEAP_SIZE" that accurately (and possibly risk overshooting if too ambitious, and undershooting with several megs if too carefull)...


Am I the only one that think a GCJ interface for controlling the GC
would be neat?
I think it would be an excellent idea. I have code that does a heap dump that I would be good to put in the interface as well. Given the heap dump and a post processing program we generate things like the number and type of each reachable object as well as the value of each String. Many cool things are possible.
With the correct tool yes :-)
But how do you control the divisor today? That must be through some JNI/CNI interface?! Can't this be the start of this new interface?


Thanks!

// Martin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]