Цикл с Process.GetProccessByName (x) Утечка памяти - PullRequest
0 голосов
/ 16 марта 2012

У меня есть программа, которая работает в фоновом режиме и периодически убивает процесс. Я использую простой цикл с вызовом Thread.Sleep (). Чтобы убить процесс, я делаю это:

Dim arrProcess As Process()
arrProcess = Process.GetProcessesByName("x")

For Each RunningProcess As Process In arrProcess
    RunningProcess.Kill()
Next

Проблема в том, что массив процессов не собирается сборщиком мусора. Я пробовал:

For Each p As Process In arrProcess
    p = Nothing
Next
arrProcess = Nothing
GC.Collect()

Но безрезультатно .... Я бы подумал, как только массив процессов выйдет из области видимости (т. Е. Закончится итерация цикла), VB.NET сможет собирать мусор ... Вместо этого эта простая программа легко начинает использовать гигабайты памяти, если я оставляю ее работать часами (это мое предназначение).

Не спрашивайте, что я пытаюсь убить ;-) Вопрос только в том, почему здесь утечка памяти.

И да, я работаю в Режим выпуска , а не в режиме отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...