Который день борюсь с проблемой утечки памяти. И вот причина.
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