memory defragmentation

Ram Meenakshisundaram rmeenaks at
Tue Feb 16 12:46:29 PST 1999

That is a problem with most memory allocators.  What needs
to be done is to move all allocated blocks of memory and
essentially "de-fragment" the heap.  I don't think this would
be practical, unless a copy gc was implemented.


-----Original Message-----
From: Godmar Back <gback at>
To: kaffe at <kaffe at>
Date: Tuesday, February 16, 1999 3:36 PM
Subject: Re: memory defragmentation

>> At 09:52 AM 2/16/99 -0700, you wrote:
>> >> Correct me if I am wrong. What actually bother me is that kaffe use a
>> >> list to keep track of free memory block. After allocating and
>> >> memory blocks, the free block will not be contiguous and this might be
>> >> problem for large objets to fit in. Or did I miss something?
>> >>
>> >
>> >I don't think the primitive lists are a problem.  They are defragmented
>> >in that adjacent pieces are spliced together upon free.  At least that's
>> >what Jason told me the last time I talked to him about that, and that's
>> >also what a quick look at gc-mem.c:gc_primitive_free shows.
>> >Do you see any problems with that?
>> >
>> > - Godmar
>> >
>> I know the free block will be merged with its free neighbors once it is
>> freed. Will it be possible that a large block can not be allocated in the
>> heap because each free block on the list is too small, even though total
>> free memory size is large enough?
>You're right.  This fragmentation problem is not currently addressed.
> - Godmar

More information about the kaffe mailing list