Бесплатный список
![]() | Эта статья включает список литературы , связанную литературу или внешние ссылки , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( Ноябрь 2021 г. ) |
Список свободных (или freelist ) — это структура данных, используемая в схеме динамического выделения памяти . Он работает путем соединения нераспределенных областей памяти в связанный список , используя первое слово каждой нераспределенной области в качестве указателя на следующую. Он наиболее подходит для выделения из пула памяти , где все объекты имеют одинаковый размер.
Свободные списки упрощают операции выделения и освобождения. Чтобы освободить регион, нужно просто связать его со списком свободных. Чтобы выделить регион, нужно просто удалить один регион из конца списка свободных и использовать его. Если регионы имеют переменный размер, возможно, придется искать регион достаточно большого размера, что может быть дорогостоящим.
Свободные списки имеют недостаток, унаследованный от связанных списков, заключающийся в плохой локальности ссылок и, следовательно, плохом использовании кэша данных , и они не консолидируют автоматически соседние регионы для выполнения запросов на выделение для больших регионов, в отличие от системы партнерского распределения . Тем не менее, они по-прежнему полезны во множестве простых приложений, где полноценный распределитель памяти не нужен или требует слишком больших затрат.
Среда выполнения OCaml использует списки свободных мест для удовлетворения запросов на выделение. [1] как и RosAlloc в среде выполнения Android. [2]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Мински, Ярон; Мадхавапедди, Анил (октябрь 2022 г.). «Понимание сборщика мусора» . Реальный мир OCaml (2-е изд.). Издательство Кембриджского университета . Проверено 8 ноября 2022 г.
- ^ «Отладка сборки мусора ART» . источник.android.com . Архивировано из оригинала 16 февраля 2023 года . Проверено 16 февраля 2023 г.