Using libgcj with different memory management library.

Andrew Haley
Mon Jun 8 09:09:00 GMT 2009

abhishek desai wrote:

> 1. As per my understanding libgcj uses boehm garbage collector for
> memory allocations. Are there any allocations in libgcj which are
> not routed to the garbage collector ? specially the parts of the
> library written in C++. From what I understand is that the memory
> allocated with the 'new' operator are routed to the gc .

Not exactly.  If you have a Java class, i.e. one which inherits from
java.lang.Object, then its new uses the GC.

> Is it necessary that the class of object being allocated should be
> derived from the 'object' class for it to be allocated on the gc ?
> or all the allocations with new get routed to gc ?

Yes, it is.  Of course, you can always overload new in your own classes
to use the Boehm gc, evernif they don't derive from Object.  You'll
have to make sure they're marked correctly, though.

> 2. I have a memory manager which allocates memory from a specific
> memory pool. I want to port boehm gc to use this memory manager for
> its allocations.

I don't understand how this can work.  The gc is a memory manager; how
can it use some other memory manager to do its own work?  You'll have
to explain a little more.

> Can someone give me some pointers as to where I can make the
> necessary modifications ? I can see the gcconfig.h and os_dep.c is
> the file containing the final system memory allocation calls.  Is
> there some other place I need to look at ? Are there any tricky
> issues I need to look at while doing the porting ?

You'll need to the gc just to scan your memory pool, or also manage
it?  Doing the latter will be hard, the former easy.


More information about the Java mailing list