我面对一个非常奇怪的行为。 有了这个虚拟代码:为什么单个循环会导致内存泄漏?
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