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列出了触发垃圾回收的三种情况:

  • 系统的物理内存不足
  • 托管堆上已分配对象使用的内存超过可接受的阈值
  • 调用GC.Collect方法
  • 资料来源:


    当我观察我的.NET应用程序的内存使用情况时,它们通常会稳步上升到某一点,在此点之后垃圾收集器会收集,内存使用情况会再次下降。据我所知,这正是它的工作原理。

    变量超出范围和.NET中的垃圾收集之间有区别。Microsoft列出了触发垃圾回收的三种情况:

  • 系统的物理内存不足
  • 托管堆上已分配对象使用的内存超过可接受的阈值
  • 调用GC.Collect方法
  • 资料来源:


    当我观察我的.NET应用程序的内存使用情况时,它们通常会稳步上升到某一点,在此点之后垃圾收集器会收集,内存使用情况会再次下降。据我所知,这正是它的工作原理。

    变量超出范围和.NET中的垃圾收集之间有区别。Microsoft列出了触发垃圾回收的三种情况:

  • 系统的物理内存不足
  • 托管堆上已分配对象使用的内存超过可接受的阈值
  • 调用GC.Collect方法
  • 资料来源:


    当我观察我的.NET应用程序的内存使用情况时,它们通常会稳步上升到某一点,在此点之后垃圾收集器会收集,内存使用情况会再次下降。据我所知,这正是它的工作原理。

    变量超出范围和.NET中的垃圾收集之间有区别。Microsoft列出了触发垃圾回收的三种情况:

  • 系统的物理内存不足
  • 托管堆上已分配对象使用的内存超过可接受的阈值
  • 调用GC.Collect方法
  • 资料来源:



    当我观察我的.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