LINUX.ORG.RU

Вопрос к знатокам memory management: arena, pool, region

 , ,


0

3

В чем сходства и отличия понятий arena, pool и region в контексте управления памятью?

Вроде бы программирую давно, да и сам реализовывал различные штуки для управления памятью, как pool'ы, так и всякие вариации на тему сборщика мусора, но с теорией и терминологией по этому делу у меня проблемы. Или все проще и термины употребляются фактически для одного и того же?


Или все проще и термины употребляются фактически для одного и того же?

Их значения скорее зависят от контекста, но в общем, грубом смысле, означают похожие сущности.

mashina ★★★★★ ()

Обычно(не всегда) пул предполагает ручное «возвращение» ему памяти. А регион/арена всегда освобождает все разом. Но часто да, они обозначают одно и то же.

Но я тоже практик больше. Из теоретиков может кто подробнее напишет.

anonymous ()

Обычно(далеко не всегда) пул работает с набором блоков фиксированного размера и предполагает ручное «возвращение» ему памяти. А регион/арена позволяет забрать у неё сколько надо и всегда освобождает все разом. Но часто да, они обозначают одно и то же.

Но я тоже практик больше. Из теоретиков может кто подробнее напишет.

anonymous ()

pool отличается тем, что работает с блоками фиксированного размера, при этом ничего не говорит о группе объектов и их единовременном удалении.

region/arena - синонимы. Обозначают они механизм, когда каждый объект ассоциируется с некоторым регионом, который может быть освобожден за один раз, «удалив» все объекты. Детали реализаций могут отличаться.

Интересной особенностью последних является возможность проверки времени жизни регионов(см. Cyclone, что-то похожее есть в Rust) и даже автоматического вывода регионов(пока только в теории и синтетических детских языках).

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.