Как начать создавать доступный для поиска сборщик "мусора" в Delphi (2009-2010)

Я ищу способ управлять всеми бизнес-объектами, которые я создаю в своих приложениях, записанных в Delphi.

Как статья о EDN Причала (http://edn.embarcadero.com/article/28217) состояния, существует в основном три способа сделать это. Я главным образом интересуюсь последним, с помощью интерфейсов. Тот путь, когда на бизнес-объект больше не ссылаются нигде в приложении, это будет, избавляются от мудрой памяти (я возвращусь на этой части позже).

При создании нового бизнес-объекта было бы мудро попросить, чтобы новый диспетчер объектов, выбрал ли я уже его ранее в программе, таким образом избежал потребности повторно выбрать его от базы данных. У меня уже есть бизнес-объект в памяти, итак, почему бы не использовать ту? Таким образом мне будет нужен список доступных объектов в памяти, чтобы быть доступным для поиска (быстро).

Предоставленный код там использует "массив TObject", чтобы хранить собранные объекты, который не делает его, очень производительное касающее перерывает список объектов, после того как Вы добираетесь до определенной суммы. Я должен был бы изменить это или на TObjectList или на своего рода двоичное доступное для поиска дерево. Каков был бы лучший выбор здесь? Я уже нашел некоторый полезный код (я думаю) по http://www.ibrtses.com/delphi/binarytree.html. Разве JCL не имел материала на двоичных деревьях?

Как я обработал бы "бизнес-объекты" и "списки бизнес-объектов" в том дереве? Был бы бизнес-объект, будучи частью списка быть сосланным дважды в дереве?

Относительно избавления от объекта: Я также хочу установить своего рода TTL (время к жизни) к тому бизнес-объекту, вызывая перевыборку после определенного количества времени. Если ссылочное встречное падение к 0, я все еще хочу сохранить объект там для определенного количества времени, должен программа все еще хотеть это в TTL. Это означает, что мне будет нужен вид вида потокового цикличного выполнения монитора список объектов (или дерево) для наблюдения за удаленными будущим образом объектами.

Я также столкнулся со Сборщиком "мусора" Boehm DLL (http://codecentral.embarcadero.com/Download.aspx?id=21646).

Таким образом короче говоря, было бы мудро основывать моего "диспетчера объектов" на исходном коде, обеспеченном в статье EDN? В каком списке я хотел бы хранить свои объекты? Как я должен обработать список объектов в моем списке? И я должен все еще сохранить свой объект в памяти некоторое время и иметь его, избавляются потоковым монитором?

Я корректен в своем обосновании? Какие-либо предложения, идеи или комментарии, прежде чем я начну кодировать? Возможно, некоторые новые идеи соединиться в мой код?

Btw, я был бы рад совместно использовать результат, чтобы другие извлекли выгоду, после того как некоторые блестящие умы уделили ему внимание.

Спасибо.

6
задан Brave Cobra 26 January 2010 в 06:27
поделиться