Который день борюсь с проблемой утечки памяти. И вот причина.
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
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
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, 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
Спасибо ещё раз.