On 12/23/2011 01:48 PM, Аноним 431 wrote:
> есть некая готовая библиотека, довольно таки большая. Все работает замечательно
> за исключением одного момента — все данных хранятся в памяти (промах
> архитекторов). С этим возникают некоторые проблемы — при больших объемах данных
> библиотека упирается в размеры доступной памяти.
В какой размер памяти она упирается ?
Возникла идея сделать фикс —
> выгружать не используемые блоки данных на диск. Вижу несколько путей решения:
> — написать свой менеджер памяти / доработать существующие
Идея дурацкая. Лучше перенести всё на платформу с поддержкой виртуальной
памяти. это и все современные Win, и любой Lin / Unix.
Если не хватит 32битной памяти -- перенесите на 64 бита.
> Минус идеи — слишком много исправлений по всей библиотеке (замена всех вызовов
> new/delete/malloc/free своими)
Это как раз не проблема. Минус идеи в том, что выделение памяти -- не то
место, где ты сможеш выгруженную память подгружать обратно.
Это надо делать при доступе к памяти, при чтении даже.
Это тебе надо грубо говоря заменить весь доступ к внутренним массивам
данных на вызовы своих функций, где ты будеш проверять, что что-то не
загружено, и подгружать (выгружая другое).
Либо -- написать свой менеджер виртуальной памяти. А нафига его
писать, если они уже есть ?
...
Это всё неверные идеи. Тебе надо переопределять ДОСТУП к памяти, а не
выделение её. Мэнеджера памяти тут мало.
Posted via RSDN NNTP Server 2.1 beta