This shows you the differences between two versions of the page.
Next revision | Previous revisionNext revisionBoth sides next revision | ||
dev:rts:heap [2014/05/26 15:38] – external edit 127.0.0.1 | dev:rts:heap [2015/03/17 15:32] – [Sweep Phase] ursgraf | ||
---|---|---|---|
Line 8: | Line 8: | ||
===== Free Blocks, Allocation ===== | ===== Free Blocks, Allocation ===== | ||
- | There are 8 lists with block sizes of (Bytes) 16, 32, 48, 64, 80, 96, 112 and >= 128. At the very beginning there is no array with theses | + | There are 8 lists with block sizes of (Bytes) 16, 32, 48, 64, 80, 96, 112 and >= 128. At the very beginning there is no array with these lists. Therefore the allocation must be done "by hand". Only after the class constructor of the class //Heap// is executed the rest of the heap can be entered as a free block. \\ |
To be able to follow the free blocks (when searching a new block or when sweeping) the structure below is used: | To be able to follow the free blocks (when searching a new block or when sweeping) the structure below is used: | ||
[{{ .: | [{{ .: | ||
Line 19: | Line 19: | ||
===== Sweep Phase ===== | ===== Sweep Phase ===== | ||
- | During the sweep phase the whole heap is traversed block by block. Each block, whether free, marked or no longer used) has to include information about its size. Free blocks and blocks which contain actual objects have this information at the start of the block. With arrays this information has te be retrieved with the aid of the type descriptor. | + | During the sweep phase the whole heap is traversed block by block. Each block, whether free, marked or no longer used has to include information about its size. Free blocks and blocks which contain actual objects have this information at the start of the block. With arrays this information has te be retrieved with the aid of the type descriptor. |
[{{ .: | [{{ .: | ||