繁体   English   中英

静态属性会导致内存膨胀吗?

[英]Do static properties cause memory bloat?

这可能是微优化,但我只是想了解有关.NET如何处理这些不同方法的背景知识。

private const string SomeText = "(imagine this might be pages worth of text)"
public static ObjectThing SomeObject { get; } = new ObjectThing(SomeText);

public static ObjectThing GetSomeObject() {
    const string someText = "(kilobytes or megabytes of text)";
    return new ObjectThing(someText);
}

使用string可能不是最好的例子。 这就是我开始想知道这个的时候。

总的来说,我认为第二种方法是由垃圾收集器生存和消亡。

但这令我感到奇怪:如果您初始化足够的静态属性,并且它们足够大,那么这会对整个程序产生相对负面的影响吗?

对整个计划有相对负面的影响吗?

静态属性是使用作为GC根的静态字段实现的。 因此,从静态属性可访问的任何对象将永远存在。

肯定会导致过多的内存使用。 这是引起堆使用情况的另一种方法。

是否过多取决于使用的内存量,可用的内存量以及GC速度是否是瓶颈。

在实际应用中,这通常并不重要。 当然,除了要在其中锚定巨大的数据结构外,这又与引用静态属性无关。 这只是一般的内存使用情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM