c# – CLR:内存中const字符串值的生命周期是多少?

假设我们有一个包含10000个const字符串成员的类.

class Schema
{
  //Average string length is 20
  public const string ID1 = "some.constant.value";
  public const string ID2 = "some.other.constant.value";
  //...
}

并非所有字段都在其余代码中引用.只有10%的人在启动时被访问 – 他们的引用被指定为各种词典的密钥(数千个字典实例).我理解const字符串是实例化的 – 多次引用const字符串不会增加消耗的内存量超过指向实习字符串表中的偏移量的元数据标记的大小.

我知道const字符串被编译到程序集中,从而影响编译程序集的大小.

这些const字符串在什么时间/事件上消耗运行时内存?

将是加载程序集时所有const字符串所需的所有内存,还是延迟直到该类被JIT编译?

我们可以通过改变等式中的某些东西来减少启动后的内存消耗吗(使字段非常量,使字符串为静态字段?).

我们假设一个Winforms应用程序(.NET 2.0).

解决方法:

Const字符串是编译时文字,因为CLR使用实际内容,只要应用程序处于活动状态,它们就会一直存在.

您也可以找到我对this question的回答.

上一篇:c# – CLR如何验证我的应用程序是否使用了正确的程序集


下一篇:c# – .Net Framework中的手动内存分页(可能/如何?)