Пользовательский распределитель памяти / менеджер в C? какой подход? - PullRequest
16 голосов
/ 13 октября 2010

Я искал некоторые (пользовательские) менеджеры памяти / распределитель, написанные на c, и просмотрел несколько статей: -

Некоторые ссылки:

Я должен поместить в песочницу небольшой веб-сервер, используя любой доступный, и у меня нет проблемв написании оболочек для схемы обработки / распределения потоков.Apache WS использует пулы памяти для обработки памяти, и пулы не являются постоянными, это основано на запросе.Ребята, вы можете что-нибудь предложить?Какой-нибудь хороший / лучший подход к этой проблеме?Мои требования следующие: -

  1. (ограниченное время отклика) Распределение и перераспределение должны быть известны заранее, то есть некоторая постоянная стоимость O (c), где c постоянна.

  2. Необходимо обрабатывать фрагментацию из разнородных размеров или последовательностей распределения / выделения ресурсов, я могу написать схему / оболочку, чтобы обеспечить то же самое.

По-настоящему ценю вашу помощь и идеи!

Ответы [ 2 ]

2 голосов
/ 14 октября 2010

Необходимо обрабатывать фрагментацию из разнородных размеров или последовательностей распределения / выделения, я могу написать схему / оболочку, чтобы обеспечить то же самое.

Чтобы избежать фрагментации, вам придетсяиспользовать гибридную стратегию распределения блоков.Гибрид здесь означает блоки элементов другого размера, чем блоки элементов одного размера, т.е. распределитель (или оболочка вокруг него) должен поддерживать блоки элементов разных размеров (маленький, средний и большой и т. Д.).Все запросы на выделение должны быть округлены до ближайшей границы блока.Эта стратегия должна гарантировать, что вы не будете страдать от внешней фрагментации, но можете вызвать внутреннюю фрагментацию.Вы можете найти больше информации по следующим ссылкам:

http://www.cotsjournalonline.com/magazine/articles/view/101217/pg:2 http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf

1 голос
/ 27 октября 2010

Просто чтобы добавить еще один в свой список

Инструменты Google Performance

Это значительно улучшает производительность выделения памяти и имеет профилировщики процессора и памяти. Их реализация Thread-Caching Malloc должна быть достаточно эффективной для многопоточных приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...