静态只读字段和性能

本文关键字:性能 读字段 静态 | 更新日期: 2023-09-27 18:26:37

假设我有一个类,它有许多字段,这些字段是用配置文件中的数据初始化的。Resharper等人经常建议应用静态只读修饰符。

我的理解是,static关键字导致变量存储在堆栈中,而不是堆中。所以我开始怀疑有很多静态字段是否会影响内存使用。我四处搜索,我能找到的最好的是这篇关于静态字符串的文章,上面写着(重点是我的):

在字符串上使用static关键字时,表示只需要一个字符串引用,该引用只能指向一个对象如果程序中有许多字符串值,请不要选择static关键字

但不幸的是,这并不能解释原因。

因此,我目前的最佳猜测是,使用静态修饰符会带来性能提升,因为其中涉及指针,但不应该大量使用它们,因为它可能会给内存带来压力,因为垃圾收集器永远不会清除它们?

这准确吗?

静态只读字段和性能

拍摄。那是一篇写得很差的文章。

基本上,他们试图获得的是一个相对简单的概念:当你使用static关键字时,你只会得到一个变量,而当你省略它时,你会得到每个实例一个变量。变量是静态的,而不是字符串。

就字符串的内存存储而言,所有字符串都存储在堆上,而不是堆栈上。唯一具有特殊存储的字符串被称为中间字符串,这是一种完全不同的蠕虫,根本不适用于这个问题。

至于您的最后一条评论,GC知道如何处理寿命长的字符串是一件完全正常的事情,一旦它们存活了一段时间而没有被删除,它们就会被转移到一个不会对性能产生太大影响的角落。