Asp.net System.OutOfMemoryException
我正在追加字符串变量文本,在追加一行后抛出System.OutOfMemoryException? 有人能解释为什么它会抛出错误吗Asp.net System.OutOfMemoryException,asp.net,vb.net,Asp.net,Vb.net,我正在追加字符串变量文本,在追加一行后抛出System.OutOfMemoryException? 有人能解释为什么它会抛出错误吗 str+="something Text" str+="something Text" 最后,我将其分配给标签文本 当我分配str的值时,它会引发异常….可能您正在尝试连接许多字符串。每次更改/concat字符串时,都会生成一个新字符串,因为字符串是不可变的类型 尝试使用StringBuider获取您的大字符串:) 我认为你有两个问题: 对于正在做的事情
str+="something Text"
str+="something Text"
最后,我将其分配给标签
文本
当我分配
str
的值时,它会引发异常….可能您正在尝试连接许多字符串。每次更改/concat字符串时,都会生成一个新字符串,因为字符串是不可变的类型
尝试使用StringBuider获取您的大字符串:)
我认为你有两个问题:
。请尝试
,或者向我们提供更多信息,说明您使用标签的确切原因以及您希望实现的目标(视觉上或HTML术语)System.Text.StringBuilder
构建字符串,而不是将其与+=
连接起来。这将提高性能并减少内存使用,但由于异常似乎发生在label.Text=str
,仅用StringBuilder
替换串联并不能解决问题<asp:Label id="MyLabel" runat="server" />
尝试将这两个选项替换为:
<asp:Literal id="MyLiteral" runat="server" />
另一个选项是使用
Response.write()
直接写入输出流。如果不确切知道您要完成的是什么,以及为什么您有这么大的字符串,最终导致出现OutOfMemoryException
,恐怕很难为您提供更多帮助。这一行看起来不错。请提供一个完整的例子。带上你的程序,尽可能多地删除它,然后发布复制您看到的错误的最小完整程序。抱歉,我无法发布代码。发布可能会给我造成问题…………是否有可能在某个地方出现无限循环?我认为您应该使用stringbuilder
来添加文本……@Vikky:即使您无法实际发布代码,你应该花点时间尽量把它减到最小。如果没有其他问题,它将帮助您确定问题所在。你可能会得到一个足够小的样本,无论什么阻止你发布的东西都会允许它。
string str = String.Empty;
str += "Some text "
str += "some more text";
MyLabel.Text = str;
<asp:Literal id="MyLiteral" runat="server" />
StringBuilder sb = new StringBuilder();
sb.Append("Some text ");
sb.Append("some more text");
MyLiteral.Text = sb.ToString();