Using libgcj with different memory management library.

Andrew Haley aph@redhat.com
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 ?
> http://gcc.gnu.org/onlinedocs/gcj/Object-allocation.html#Object-allocation

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.

Andrew.



More information about the Java mailing list