Как лучше всего распределять и использовать память, когда программа перемещается и сообщает о деталях файловой системы - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть программа, которая считывает все имена файловых файлов / файлов, размер и т. Д. И заполняет их в виде древовидной структуры.Как только это будет сделано, он сгенерирует отчет.

Я хочу написать свою программу, которая собирает и затем сообщает эти данные с использованием памяти наиболее эффективным способом и не превышая моего пространства кучи.

Я беспокоюсь, что если в файловой системе много файлови dirs., он будет занимать много памяти и может в конечном итоге закончиться (malloc() начнет сбоить).

В конечном итоге это подлинное потребление памяти. Существуют ли какие-либо методы / методы для преодоления этого?

Ответы [ 2 ]

4 голосов
/ 06 декабря 2011

Вы можете использовать шаблон проектирования Flyweight для каждого узла папки.

http://en.wikipedia.org/wiki/Flyweight_pattern

Вместо сохранения полного пути для каждого элемента, вы можете иметь битовый массив указателей на частичныепути (имена папок).Затем их можно легко восстановить при необходимости.

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

2 голосов
/ 06 декабря 2011

Возможно, использование valgrind или Сборщик мусора Бома может помочь вам (по крайней мере, в Linux).

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