假设我们有一个包含 10000 个常量字符串成员的类。
class Schema
{
//Average string length is 20
public const string ID1 = "some.constant.value";
public const string ID2 = "some.other.constant.value";
//...
}
并非所有字段都在其余代码中引用。它们中只有 10% 在启动时被访问——它们的引用被分配为各种词典的键(数以千计的 Dictionary 实例)。我知道 const 字符串是驻留的 - 多次引用 const 字符串不会增加消耗的内存超过指向驻留字符串表中偏移量的元数据标记的大小。
我知道 const 字符串被编译到程序集中,因此会影响编译程序集的大小。
这些 const 字符串在什么确切时间/事件消耗运行时内存?
所有 const 字符串所需的全部内存是在加载程序集时获取的还是延迟到类被 JIT 编译时?
我们可以通过改变等式中的某些东西来减少启动后的内存消耗吗? (使字段成为非常量,使字符串成为静态字段?)。
让我们假设一个 Winforms 应用程序 (.NET 2.0)。
最佳答案
Const 字符串是编译时文字,并且由于 CLR 对这些字符串使用实习,只要应用程序处于事件状态,它们就会一直存在。
您还可以找到我对 this question 的回答相关。
关于c# - CLR:常量字符串值在内存中的生命周期是多长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3298770/