我的理解(可能是错误的)是,在 C# 中,当你创建一个字符串时,它会被实习到“实习生池”中。这保留了对字符串的引用,以便多个相同的字符串可以共享操作内存。
但是,我正在处理很多很可能是唯一的字符串,一旦完成每个字符串,我需要将它们从操作内存中完全删除,并且我不确定如何删除缓存的引用,以便垃圾收集器可以从内存中删除所有字符串数据。如何防止字符串被保留在此缓存中,或者如何清除它/或从中删除字符串,以便它确实从操作内存中删除?
如果出于安全原因需要从内存中删除字符串,请使用SecureString http://msdn.microsoft.com/en-GB/library/system.security.securestring.aspx.
否则,如果任何地方都没有对该字符串的引用,GC 无论如何都会清理它(它将不再被驻留),因此您无需担心驻留。
当然,首先只有字符串文字会被保留(或者如果您调用 String.Intern(),如上面 Petr 和其他人所述)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)