.NET内存泄漏

时间:2013-10-17 07:03:10

标签: c# asp.net .net

我有一个具有多个帮助程序类的ASP.NET应用程序。我有点担心内存泄漏。每当我想使用帮助者类成员函数时,我就像这样称呼它们

new SampleHandler().DoFunction();

由于它没有对创建的对象有任何强引用,我可以保证GC是否会清除所创建对象的内存?
由于我很有机会在页面中再次使用该对象,因此我开始编码。

注意:在以相同方式执行的代码隐藏文件中,对属于不同帮助程序类的各种成员函数进行了大量调用

2 个答案:

答案 0 :(得分:8)

是的,由于没有其他未完成的引用,new SampleHandler()创建的实例一旦DoFunction()返回就有资格收集。

但是,通常情况下,GC无法保证GC收集该实例的时间。

答案 1 :(得分:4)

垃圾收集器将处理未使用的引用。所以你不必担心内存泄漏。但是如果你非常快地创建“垃圾”对象,你可能会产生暂时的记忆压力。

但是如果你不需要实例或实例是可交换的,你应该考虑制作方法static

public class SampleHandler
{
    public static void DoFunction()
    {
        // ...
    }
}

然后你会称之为:

SampleHandler.DoFunction();

ASP.NET中的静态方法没有问题,即使它是一个多线程环境。但是你应该小心静态字段。