这可能是一个微优化,但我很想知道.NET如何处理这些不同方法的背景。
private const string SomeText = "(imagine this might be pages worth of text)"
public static ObjectThing SomeObject { get; } = new ObjectThing(SomeText);
VS
public static ObjectThing GetSomeObject() {
const string someText = "(kilobytes or megabytes of text)";
return new ObjectThing(someText);
}
使用string
可能不是最好的例子;当我开始想知道这件事时,这正是我的工作。
一般来说,我的想法是第二种方法由垃圾收集器生存和死亡。
但这让我想知道:如果你初始化足够的静态属性,如果它们足够大,它是否会对整个程序产生相对负面影响?
答案 0 :(得分:0)
它对整个计划有负面影响吗?
静态属性是使用GC根源的静态字段实现的。因此,从静态属性可以访问的任何对象都将永远存在。
这可能会导致过多的内存使用量。这只是导致堆使用的另一种方式。
是否过多取决于使用的内存量,可用内存量以及GC速度是否是瓶颈。
在实际应用中,这通常无关紧要。当然,除非你在那里锚定一个巨大的数据结构,但是再次与被引用的静态属性无关。这只是一般的内存使用情况。