更新:似乎没有垃圾收集。但是我仍然想知道是否或如何通过显示固定大小的char数组而不是一个很长的字符串来减少内存使用,其中onyl对我来说很有趣。
TextBox
或其他控件中显示一个char数组,而不是一个字符串 。因此,我可以修改char数组并使控件显示它。我不在乎第一行,可以将它们剪掉。
这是一种快速的日志查看器。
TextBox textBox = new TextBox();
// ...
// on every new line:
textBox.AppendText(Environment.NewLine + line);
现在,我textBox.AppendText(Environment.NewLine + line);
非常频繁地将字符串行添加到文本框中。我(相信)注意到垃圾收集每隔几秒钟就会打击我,几乎延迟了1秒,因为我的应用没有其他经常出现滞后的原因(我的大部分数据都是为了避免创建新对象而组织的)。
编辑:
new string(...)
因此我只能使用此1个char数组。这将行不通... TextBox在内部存储其文本。当您设置Text
或调用AppendText()
等时,控件会将您提供的数据复制到其内部字符串中。无法将其“指向”一个字符数组,您可以对其进行更新并查看更改。
为此,您需要编写自己的控件,该控件根据数组绘制文本。(实际上,这是大多数显示大量文本的程序(例如文本编辑器)所做的。)
但是,您确定您完全了解造成您所看到的性能问题的原因吗?您可能是正确的,但是由于分配太多string
对象而导致的垃圾回收并不是我的第一个怀疑对象。您是否已在性能/内存分析器中运行代码并进行了彻底调查,或者只是猜测?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句