[Vm-dev] What is a free object

John M McIntosh johnmci at smalltalkconsulting.com
Thu Jul 26 19:31:35 UTC 2007

On Jul 26, 2007, at 10:43 AM, Bert Freudenberg wrote:
>> since Squeak (fortunately) has a garbage collector, the heap does not
>> just consist of actual objects, but also of chunks of unused memory.
>> However, these also have an object header to be more easily handled:
>> during allocation, the memory manager must be able to find a free
>> piece of heap memory to assign it to the newly allocated object.  
>> These
>> chunks of free memory are what the VM code calls "free objects".

To clarify this, the memory allocation logic does not scan for these  
free spaces when allocating new objects.
Rather it allocates memory from the end of the image which is the  
free space after the last GC, by using a simple math on the freeblock  

A simplistic view:

After N allocations or if we can't allocate the memory a incremental  
GC is done which garbage collects  young space
and makes the free blocks as it find objects that are garbage. After  
the mark sweep phase of the GC, it runs compact phase
which then moves objects down to perculate all that free space up,  
then resets the freeblock pointer. At this point young space is
fully compacted.   If a full GC runs, then all of object memory is  
GCed and compacted leaving no free blocks in memory.

John M. McIntosh <johnmci at smalltalkconsulting.com>
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com

More information about the Vm-dev mailing list