5.3. Výběr nejlepšího vhodného bloku (best fit)

Principem této metody je vyhledání nejmenšího volného bloku paměti, jehož velikost je větší nebo rovna požadované. To vede k minimalizaci ztrát zajištěním menší fragmentace paměti, ovšem pokud bude shoda délek příliš velká, ale ne dokonalá, vznikne velké množství většinou nepoužitelných malých zbytků paměti. Při prohledávání volných bloků musíme navíc projít všechny (pokud nenajdeme přesnou shodu), takže pro velké množství objektů bude prohledáváni, a tedy i celé přidělování paměti, pomalé. Proto se používají spíš varianty založené například na vyvážených binárních stromech.

Jedním z možných vylepšení tohoto algoritmu je využití segregované paměti s více seznamy volných bloků, kdy jsou v jednom seznamu umístěny bloky přibližně stejné délky. Při vyhledávání nejlepšího vhodného bloku se pak prochází kratší seznam. Další možností jsou indexované je seřazení bloků podle délky, ať již opět do lineárních seznamů, nebo do složitějších datových struktur.


Korespondenční úkolKorespondenční úkol
Implementujte třídu BestFitAllocator, která bude realizovat přidělování paměti metodou výběru nejlepšího vhodného bloku. Ověřte experimentálně, jak se na rychlosti přidělování a uvolňování paměti projeví seřazení bloků podle délky.