memory defragmentation

Ram Meenakshisundaram rmeenaks at olf.com
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.

Ram

-----Original Message-----
From: Godmar Back <gback at cs.utah.edu>
To: kaffe at rufus.w3.org <kaffe at rufus.w3.org>
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
free
>> >> list to keep track of free memory block. After allocating and
reclaiming
>> >> memory blocks, the free block will not be contiguous and this might be
the
>> >> 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