【发布时间】:2012-04-10 20:13:57
【问题描述】:
我正面临一种非常奇怪的行为。 使用这个虚拟代码:
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 会处理这些事情。
此外,如果我将它的内存行为与我每 10 次迭代强制 GC 收集的版本进行比较,结果(对我来说)令人惊讶:
绿色进程是没有 GC.COllect() 的进程,黑色进程是另一个进程。
你能帮我理解这个问题吗?
谢谢!
【问题讨论】:
-
从 9.5 到 11 MB?你担心那个?它最终会被清理干净,别担心。
-
问题是内存从 2 小时开始就是这样运行的......
-
@ff8mania:那只是因为你的程序很慢,大部分时间都在睡觉。
-
你是对的。但是有人可以解释一下为什么强制 GC 的版本总是平坦的?
-
它是扁平的,因为它总是被收集,因为你强制 GC。
标签: c# .net memory-management garbage-collection