在 C# 中从计算机内存中删除字符串
Delete string from computer memory in C#
我必须使用字符串,因为它具有我所拥有的所有功能,比如检查它的任何字母、子字符串等等。使用过的字符串后,我需要将其从计算机内存中删除。我已经读过有关 SecureString 的内容,但我无法使用它,因为它没有很多功能。
谁能帮我如何从内存中删除字符串?我该如何解决?
只要是动态字符串,而不是编译后的文字 - 您无需担心 "deleting" 它们,垃圾收集器会为您完成。字符串与任何其他 .net 类 相同,因此您无需管理它们分配的内存。
如果您担心您的应用程序在某些时间段占用的内存大小 - 您可以通过调用 System.GC.Collect()
强制 GC 收集所有不再需要的资源。但通常不需要这样做。
另请注意,调用 System.GC.Collect()
并不意味着垃圾收集会立即开始 - 这意味着 GC 将很快安排收集。
如果您删除所有对字符串的引用,您可以调用 System.GC.Collect()
强制垃圾收集器 运行,尽管即使那样也不能保证立即 运行,更像是"Hey, GC, run as soon as you get the chance." 而且真的完全不推荐。如果经常这样做,可能会导致严重的性能问题。
如果您的字符串真的非常重要以至于您甚至不希望它在内存中浮动,那么 SecureString 确实是您的最佳选择。你只需要为它重新实现你需要的函数(比如 .SubString())。
在大多数情况下,这两个答案都应该提供正确答案,但如果您的字符串值非常重要,您必须在使用后将其从内存中删除,最好打赌是使用 SecureString
.
您已经声明SecureString
没有提供您具体需要的方法;在这种情况下,您需要自己做一些事情。幸运的是,.NET 是开源的,您可以轻松地从 here 复制粘贴您需要的实现。将它们作为 SecureString
的扩展来使用它们。
我必须使用字符串,因为它具有我所拥有的所有功能,比如检查它的任何字母、子字符串等等。使用过的字符串后,我需要将其从计算机内存中删除。我已经读过有关 SecureString 的内容,但我无法使用它,因为它没有很多功能。
谁能帮我如何从内存中删除字符串?我该如何解决?
只要是动态字符串,而不是编译后的文字 - 您无需担心 "deleting" 它们,垃圾收集器会为您完成。字符串与任何其他 .net 类 相同,因此您无需管理它们分配的内存。
如果您担心您的应用程序在某些时间段占用的内存大小 - 您可以通过调用 System.GC.Collect()
强制 GC 收集所有不再需要的资源。但通常不需要这样做。
另请注意,调用 System.GC.Collect()
并不意味着垃圾收集会立即开始 - 这意味着 GC 将很快安排收集。
如果您删除所有对字符串的引用,您可以调用 System.GC.Collect()
强制垃圾收集器 运行,尽管即使那样也不能保证立即 运行,更像是"Hey, GC, run as soon as you get the chance." 而且真的完全不推荐。如果经常这样做,可能会导致严重的性能问题。
如果您的字符串真的非常重要以至于您甚至不希望它在内存中浮动,那么 SecureString 确实是您的最佳选择。你只需要为它重新实现你需要的函数(比如 .SubString())。
在大多数情况下,这两个答案都应该提供正确答案,但如果您的字符串值非常重要,您必须在使用后将其从内存中删除,最好打赌是使用 SecureString
.
您已经声明SecureString
没有提供您具体需要的方法;在这种情况下,您需要自己做一些事情。幸运的是,.NET 是开源的,您可以轻松地从 here 复制粘贴您需要的实现。将它们作为 SecureString
的扩展来使用它们。