内存消耗:最好不是静态变量

本文关键字:静态 变量 内存 | 更新日期: 2023-09-27 18:11:20

我正在构建一个具有Singleton模式的dll,因此实际上用户添加我的dll,导入引用并执行如下方法:

FooClass.Foo();

现在假设这个方法每次都返回一个列表,并且具有这样的结构:

static class FooClass
{
   private static List<string> _fooList = new List<string>();
   public static List<string> Foo()
   {    
        _fooList.Clear();
        //list population
        return _fooList;
   }
}

在方法Foo中,我每次清除列表,而不是创建该列表的新实例,我重用该对象。我的问题是:

是更好地在方法Foo中创建列表的新实例,还是使用与我的示例相同的列表对象?

所有返回的结果将被用户保存在另一个对象中,所以我不需要在内存中保存列表。

任何提示将不胜感激!谢谢。

内存消耗:最好不是静态变量

是更好地在方法Foo中创建列表的新实例,还是使用与我的示例相同的列表对象?

这两种方法并不等效,因为clear修改的实例可能被程序的其他部分使用。这可能会导致严重的问题,特别是在并发环境中。考虑到返回的结果将被用户保存在另一个对象中,如果您使用clear,几乎肯定会出现问题。

我不需要在内存中保存列表。

然后删除静态_fooList,并在每次调用该方法时简单地创建一个新对象。在每次调用时清除单例就违背了单例的目的。