我在我正在处理的大量软件中遇到了一些内存问题,我正在查看我们编写的方法,我们在方法的开头声明变量,但它们没有被清理(无效或处理)在方法的最后。
public static bool CheckIsNumber(string x)
{
int y;
return(int.TryParse(x, out y));
}
如上所述,y
永远不会设置为null或处置或类似的东西,我一直以为它会被GC拾取,但在查看内存分析器后,我不太确定了。
答案 0 :(得分:3)
在.NET范围内,超出范围的变量和垃圾收集之间存在区别。 Microsoft列出了三个将触发垃圾回收的条件:
来源:http://msdn.microsoft.com/en-us/library/ee787088(v=vs.110).aspx#conditions_for_a_garbage_collection
当我查看我的.NET应用程序的内存使用情况时,它们通常会稳步上升到垃圾收集器收集并且内存使用率再次下降的某个时间点。我能说的最好的就是它的工作方式。