公共语言运行库什么时候终止?

时间:2013-12-19 11:32:17

标签: c# .net clr

string interning on MSDN上的效果部分有一个有用的警告:

  

在公共语言运行时(CLR)终止之前,不太可能释放为实例化String对象分配的内存。

但是:CLR什么时候终止?

3 个答案:

答案 0 :(得分:2)

简单的答案是:CLR在主机(进程)终止时终止。

此外,还有一个默认的AppDomain(无法访问)。即使您的AppDomain已卸载,此AppDomain仍将继续存在。这就是我认为Tigran所指的系统

答案 1 :(得分:0)

有一篇很好的Code Project文章介绍了有关生命周期的一些细节,包括CLR终止。

http://www.codeproject.com/Articles/16164/Managed-Application-Shutdown

该文章的灵感来自:http://blogs.msdn.com/b/cbrumme/archive/2003/08/20/51504.aspx

答案 2 :(得分:0)

大多数可能的文档都提到了这样一个事实:与你的进程相关的CLR“线程”将被终止,正如文档正确地说的那样,字符串:

  

公共语言运行库通过维护a来保存字符串存储   表,称为实习池,包含单个引用   以编程方式声明或创建的每个唯一文字字符串   你的计划。因此,带有一个文字字符串的实例   特殊值仅在系统中存在一次。

而不在您的申请中。事实上,进一步阅读它说:

  

CLR对interned String对象的引用可以在你的。之后保留   应用程序,甚至是您的应用程序域,终止......

因此,基本上放置这些数据的存储空间超出了您的流程地址空间,因此在流程终止后仍保留在系统事件中。