如何检测和解决巨大的字符串使用问题

时间:2012-10-12 05:12:50

标签: c# memory

当使用WinDbg跟踪内存使用问题时,我发现有数百万字符串完全占用100 + MB。我们的应用程序是一个财务类型的APP,因此有十万个帐户,每个帐户都有许多字符串类型属性。

我的问题是:是否有关于调整内存问题的优秀文章/资源,特别是字符串类型?提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可能需要查看您的设计。拥有数百万字符串可能不是一个好主意/设计。

虽然不确定您的设计究竟是什么,但您可以使用

调整字符串
  • 的StringBuilder
  • String interning

使用普通的字符串对象,字符串上的每个修改都会创建一个新的字符串对象,这会带来不必要的内存压力。您可以使用stringbuilder类来缓解此问题.StringBuilder对象维护一个内部字符数组,并且任何修改都不会创建一个新的字符串对象,而不是内部字符数组被修改。字符串是通过调用StringBuilder对象上的ToString()获得的。

更多信息

http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx

字符串实习是一个将唯一字符串放在公共池上并在应用程序之间共享的过程。如果已经在池中创建并实现了字符串,则可以减少创建字符串的需要。

更多信息

http://msdn.microsoft.com/en-us/library/system.string.intern.aspx

答案 1 :(得分:0)

StringBuilder可能是要走的路。你需要拆分字符串。你需要大容量内存和StringBuilder我必须直接这样做。