Re[6]: ADO. Recordset. Повышенный расход памяти.
От: Кривов Сергей Владимирович Россия  
Дата: 07.03.03 10:38
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>не мог бы ты для успокаения моей души взглянуть а не увеличивается ли обьеё памяти при использовании C++ клиента у самого клиента и у COM+ приложения ? И ещё. Что значит фраза

Tom>

Tom>FWSrvCore — это объект, сконфигурированный в COM+ (собственно dllhost — это COM+ приложение).


Объем dllhost-а при использовании С++ клиента увеличивается на 400кб (те же 100 итераций), но через некоторое время уменьшается (видимо освобождается пул коннектов и, возможно COM+ чего нибудь подчищает). Объем самого клиента честно говоря не проверял, и прямо сейчас проверить не смогу — идет повторная перекомпиляция под NuMega. Попробую с ней еще раз погонять.
Насчет COM+ — используется следующая структура. Как COM+ приложение сконфигурированы несколько компонентов (т. е. в COM+-е создано приложение, туда добавлены компоненты (включая FWSrvCore), выставлены нужные атрибуты.) У клиента есть указатель на FWSrvCore — этот объект гарантировано создается в контексте COM+ приложения (т. е. в процессе dllhost-а). Создание любого объекта осуществляется через него.
Первый шаг — у SrvCore запрашивается лекговесный компонент(ComponentCreator) — что-то типа специализированной фабрики классов. Этот компонент не сконфигурирован как COM+ и поэтому создается в контексте несконфигурированных компонентов но в процессе dllhost-а.
Второй шаг — у ComponentCreator-а вызывается метод CreateInstance, который создает нужный нам объект (в данном случае DBSet) опять же в контексте несконфигурированных компонентов но опять же в процессе dllhost-а.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.