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?


Martin Egholm Nielsen wrote:

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.


Increasing the value of the C_free_space_divisor (We use 20 - 30) causes the GC to run more often resulting in smaller pools for each size. The result being that the erroneous OOM is much less common (or in our case never happens).


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.


David Daney.


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