C# 清理方法中的变量
我在处理的一个大型软件中遇到了一些内存问题,我正在查看我们编写的方法,其中我们在方法开始时声明变量,但在方法结束时它们没有被清除(取消或处理)C# 清理方法中的变量,c#,C#,我在处理的一个大型软件中遇到了一些内存问题,我正在查看我们编写的方法,其中我们在方法开始时声明变量,但在方法结束时它们没有被清除(取消或处理) public static bool CheckIsNumber(string x) { int y; return(int.TryParse(x, out y)); } 正如您在上面看到的,y从来没有设置为null或disposed之类的,我一直认为它会被GC拾取,但是在查看内存分析器之后,我不再那么确定了。在.NET中,变量超出范围
public static bool CheckIsNumber(string x)
{
int y;
return(int.TryParse(x, out y));
}
正如您在上面看到的,
y
从来没有设置为null或disposed之类的,我一直认为它会被GC拾取,但是在查看内存分析器之后,我不再那么确定了。在.NET中,变量超出范围和垃圾收集之间有区别。Microsoft列出了触发垃圾回收的三种情况:
当我观察我的.NET应用程序的内存使用情况时,它们通常会稳步上升到某一点,在此点之后垃圾收集器会收集,内存使用情况会再次下降。据我所知,这正是它的工作原理。变量超出范围和.NET中的垃圾收集之间有区别。Microsoft列出了触发垃圾回收的三种情况:
当我观察我的.NET应用程序的内存使用情况时,它们通常会稳步上升到某一点,在此点之后垃圾收集器会收集,内存使用情况会再次下降。据我所知,这正是它的工作原理。变量超出范围和.NET中的垃圾收集之间有区别。Microsoft列出了触发垃圾回收的三种情况:
当我观察我的.NET应用程序的内存使用情况时,它们通常会稳步上升到某一点,在此点之后垃圾收集器会收集,内存使用情况会再次下降。据我所知,这正是它的工作原理。变量超出范围和.NET中的垃圾收集之间有区别。Microsoft列出了触发垃圾回收的三种情况:
当我观察我的.NET应用程序的内存使用情况时,它们通常会稳步上升到某一点,在此点之后垃圾收集器会收集,内存使用情况会再次下降。据我所知,这就是它的工作原理。它是一个静态方法,这意味着(对我来说)它将在应用程序的整个生命周期中持续,而不是像实例方法或变量那样的GC。但我可能是WAAAAAYYYY错了。这是一个局部变量,当方法返回时它超出范围。这不是问题。它们将被垃圾收集器拾取,但何时发生是不确定的。即使该方法是静态的,
y
的作用域就是该方法,并且一旦该方法完成,GC就知道它可以提取这些方法。如果变量包含需要处理的内容,则应该在处理完后处理它。然而,Int32并非如此。inty
是创建“垃圾”的一个非常奇怪的例子。而且将null
分配给int
或处理它有些困难。请考虑更实际的示例,这是一个静态方法,它意味着它将持续应用程序的生命,并且不会像实例方法或变量那样GC。但我可能是WAAAAAYYYY错了。这是一个局部变量,当方法返回时它超出范围。这不是问题。它们将被垃圾收集器拾取,但何时发生是不确定的。即使该方法是静态的,y
的作用域就是该方法,并且一旦该方法完成,GC就知道它可以提取这些方法。如果变量包含需要处理的内容,则应该在处理完后处理它。然而,Int32并非如此。inty
是创建“垃圾”的一个非常奇怪的例子。而且将null
分配给int
或处理它有些困难。请考虑更实际的示例,这是一个静态方法,它意味着它将持续应用程序的生命,并且不会像实例方法或变量那样GC。但我可能是WAAAAAYYYY错了。这是一个局部变量,当方法返回时它超出范围。这不是问题。它们将被垃圾收集器拾取,但何时发生是不确定的。即使该方法是静态的,y
的作用域就是该方法,并且一旦该方法完成,GC就知道它可以提取这些方法。如果变量包含需要处理的内容,则应该在处理完后处理它。然而,Int32并非如此。inty
是创建“垃圾”的一个非常奇怪的例子。而且将null
分配给int
或处理它有些困难。请考虑更实际的示例,这是一个静态方法,它意味着它将持续应用程序的生命,并且不会像实例方法或变量那样GC。但我可能是WAAAAAYYYY错了。这是一个局部变量,当方法返回时它超出范围。这不是问题。它们将被垃圾收集器收集,但是w