在MSDN的性能部分有一个有用的警告关于字符串池化:链接中指出,池化的字符串对象所分配的内存可能直到公共语言运行时(CLR)终止才会被释放。但是,CLR何时终止呢?
有一篇很好的 Code Project 文章详细介绍了生命周期,包括 CLR 终止。
http://www.codeproject.com/Articles/16164/Managed-Application-Shutdown
该文章的灵感来源于:http://blogs.msdn.com/b/cbrumme/archive/2003/08/20/51504.aspx
大多数情况下,文档指的是CLR“线程”与您的进程相关联将被终止,正如文档正确地说的那样,在内部字符串中:
公共语言运行时通过维护一个称为intern池的表来保留字符串存储,该表包含在程序中声明或以编程方式创建的每个唯一文字字符串的单个引用。因此,具有特定值的文字字符串的实例仅存在于系统中。
而不是在您的应用程序中。事实上,进一步阅读后它说:
CLR对国际化的String对象的引用可以在您的应用程序甚至应用程序域终止后持久存在...
因此,基本上这些数据放置的存储空间超出了您的进程地址空间,因此即使在您的进程终止后,它仍然存在于系统中。
system
是什么,在进程/应用程序退出后仍然存在于内存中?它是一些共享池,为所有正在运行的 .NET 应用程序存在,并在每个 .NET 应用程序关闭时退出吗?你在哪里看到这个信息的? - leppie