Neuroware
@Neuroware
Программист в свободное от работы время

Как избавиться от утечки памяти?

Есть процедура
static object DoWorkTask(object data, byte[] rawdll)
        {
            var asm = Assembly.Load(rawdll);
            var types = asm.GetTypes();
            foreach (var type in types)
            {
                if (type.Name == "Task")
                {
                    var runnable = Activator.CreateInstance(type) as iTask.iTask;
                    if (runnable == null) throw new Exception("broke");
                    var result = runnable.DoWork("Test!");
                    runnable = null;
                    types = null;
                    asm = null;
                    return result;
                }
                break;
            }
            types = null;
            asm = null;
            GC.Collect();
            return null;
        }

вроде как все очищаю, но все равно память утекает при работе, где может быть проблема?
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
dordzhiev
@dordzhiev
В .NET сборки нельзя выгрузить. Но можно выгрузить AppDomain, в который загружены эти сборки. Для этого надо создать отдельный AppDomain, загрузить в него сборки, а потом выгрузить этот AppDomain. Это в теории.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы