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.
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
>> >> 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