我面對一個非常奇怪的行爲。 有了這個虛擬代碼:爲什麼單個循環會導致內存泄漏?
static void Main(string[] args)
{
int i = 0;
while (true)
{
i++;
String giro = "iteration " + i;
Console.WriteLine(giro);
Thread.Sleep(40);
}
}
使用perfom私人字節增加。
img http://dl.dropbox.com/u/2478017/memory.gif
這怎麼可能?
我以爲GC照顧這些東西。
而且,如果我比較這記憶行爲與我強迫GC收集每10次迭代版本,結果是(我)令人吃驚:
綠色的過程是一個沒有GC.COllect(),黑色是另一個。
你能幫我理解這個問題嗎?
謝謝!
從9.5到11 MB?你擔心這個?它最終會被清理乾淨,不用擔心。 – Botz3000 2012-03-27 09:55:08
問題是內存以2小時以上的方式表現出來...... – ff8mania 2012-03-27 10:06:11
@ ff8mania:那是因爲你的程序非常慢,大部分時間都在睡覺。 – 2012-03-27 10:34:58