Можно ли в .net загрузить Assembly минуя Global Assemb Cahce
От: njel  
Дата: 09.08.05 15:28
Оценка:
Который день борюсь с проблемой утечки памяти. И вот причина.

AppDomain newDomain = AppDomain.CreateDomain("newDomain"); создаю домен
byte[] rawAssembly = loadFile(i.ToString()+".dll"); читаю тело длл с именем 0.dll, 1.dll, ... 100,dll и так далее
Assembly assembly = newDomain.Load(rawAssembly, null); загружаю Assembly в домен.

По идеологии, выгружаю всё что загрузил ниже.

assembly = null;
AppDomain.Unload(newDomain);
newDomain = null;

GC.Collect();
GC.WaitForPendingFinalizers();

если же теперь наблюдать за GC.GetTotalMemory(true) то окажется что размер выделенной пямяти увеличивается.
Возможно что созданый Assembly падает Global Assembly Cashe. В .NET 2.0 Есть возможность загружать
Assembly минуя Global Assembly Cashe.

Люди добрые. Люди умные. Люди настойчевые. Помогите, дайте возможность поспать, отойти от монитора.
С уважением.





09.08.05 19:37: Перенесено модератором из 'MFC' — SchweinDeBurg
Re: Можно ли в .net загрузить Assembly минуя Global Assemb C
От: TK Лес кывт.рф
Дата: 09.08.05 16:05
Оценка:
Hello, "njel"
> Который день борюсь с проблемой утечки памяти. И вот причина.
>
> AppDomain newDomain = AppDomain.CreateDomain("newDomain"); создаю домен
> byte[] rawAssembly = loadFile(i.ToString()+".dll"); читаю тело длл с
> именем 0.dll, 1.dll, ... 100,dll и так далее
> Assembly assembly = newDomain.Load(rawAssembly, null); загружаю Assembly в
> домен.
>

В оба домена Assembly assembly — это загруженная сборка

> По идеологии, выгружаю всё что загрузил ниже.

>

Надо было загружать сборку "изнутри" домена
Posted via RSDN NNTP Server 2.0 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Можно ли в .net загрузить Assembly минуя Global Assem
От: njel  
Дата: 10.08.05 06:30
Оценка:
Здравствуйте, TK, Вы писали:

TK>Hello, "njel"

>> Который день борюсь с проблемой утечки памяти. И вот причина.
>>
>> AppDomain newDomain = AppDomain.CreateDomain("newDomain"); создаю домен
>> byte[] rawAssembly = loadFile(i.ToString()+".dll"); читаю тело длл с
>> именем 0.dll, 1.dll, ... 100,dll и так далее
>> Assembly assembly = newDomain.Load(rawAssembly, null); загружаю Assembly в
>> домен.
>>

TK>В оба домена Assembly assembly — это загруженная сборка


>> По идеологии, выгружаю всё что загрузил ниже.

>>

TK>Надо было загружать сборку "изнутри" домена


Лады. Спасибо. Ща подумаю. Вот только хотел сказать что Global Assembly Cache тут ни при чём.
для просмотра GPC используйте gacutil /l
Спасибо ещё раз.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.