【发布时间】:2015-06-07 02:56:19
【问题描述】:
我需要连接几个字符串。我正在使用 StringBuilder 如下
StringBuilder result = new StringBuilder(length);
长度是我想要的字符串的“长度”。
“长度”是更大的数字。 要获取字符串,我需要做
return result.ToString();
当我试图分析我的应用程序消耗的内存时,我看到“StringBuilder”和“String”占用了相同数量的内存及其副本。 由于字符串的长度很长,它占用的内存百分比更大。
有没有更好的方法来解决这个内存问题?
【问题讨论】:
-
在不知道您要解决的问题的情况下很难回答这个问题。但是如果你的应用程序因为大字符串而使用了太多内存,那么看起来你根本不应该使用字符串。那么流式传输方法可能会更好。
-
是的,我们需要序列化它并且需要从另一端读取。所以我们使用字符串。
-
好吧,如果你想使用字符串,那么你必须忍受后果。但是,如果您使用 StringBuilder 来连接已知(在编译时)数量的字符串,那么使用 + 运算符可能会更好,因为编译器会将其转换为 String.Concat 并且可能避免为临时对象。
-
解决这个内存问题? 有问题吗?或者你只是有这么多的空闲内存垃圾收集器没有运行?
标签: c# .net string performance memory-leaks