【发布时间】:2014-12-20 02:30:23
【问题描述】:
我有一种情况,我会遇到大量重复的字符串,这些字符串会在内存中持续很长时间。我想使用String.Intern,但我不想侵入任何潜在的应用程序资源,因为我的项目是一个库。这是如何工作的?
【问题讨论】:
-
嗯,内部字符串是引用计数的。包含引用的主要对象是 AppDomain 拥有的表(类似于 HashSet)。卸载 appdomain 会清空表,减少引用计数。绝大多数(如果不是全部)字符串应该消失。没有“入侵”危险。
-
有点跑题了,但是在搜索有关字符串实习的各种信息时,我发现了这篇非常有趣的博客文章:blog.benoitblanchon.fr/modify-intern-pool。另请参阅相关的源代码。
标签: c# .net string-interning