内存消耗:最好不是静态变量
本文关键字:静态 变量 内存 | 更新日期: 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
,并在每次调用该方法时简单地创建一个新对象。在每次调用时清除单例就违背了单例的目的。