当过多地向浏览器写入内容时,防止出现内存不足错误

乔乔

我承担了解决一个问题的任务,我怀疑有太多数据正试图写入浏览器。即建立表以显示2,000多个记录。

$exception  {"Exception of type 'System.OutOfMemoryException' was thrown."} System.Exception {System.OutOfMemoryException}

引发异常 Page_PreRender

解决问题的最简单方法是什么?

测试/解决问题的最简单方法是什么?

谢谢

[OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.]
   System.String.Concat(String str0, String str1, String str2, String str3) +76
   ProgramName.File.GetData() in C:\inetpub\wwwroot\ProgramName\File.aspx.cs:137
   ProgramName.File.Page_PreRender(Object sender, EventArgs e) in C:\inetpub\wwwroot\ProgramName\File.aspx.cs:18
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnPreRender(EventArgs e) +8775110
   System.Web.UI.Control.PreRenderRecursiveInternal() +80
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +842
RB。

通过堆栈跟踪,我想我知道您的问题。

在您的Page_PreRender方法中,您要串联字符串(您提到要构造一个表-可能是代码在执行此操作)。

如果将2个字符串连接在一起,则会分配内存get来创建一个新字符串来保存结果,但是不会回收用于存储前两个字符串的内存,因为这些字符串仍在范围内。我猜您正在串联很多字符串(循环),因此内存不足。

解决方法是使用StringBuilder

找到看起来像这样的代码:

public void GetData() 
{
    string myTableString = "";
    foreach (var row in MyRows)
    {
        myTableString += "<tr><td>" + row.someProperty + "</td></tr>"
    }

到以下

using System.Text // This goes at the top of the file, with the other using statements.
...

public void GetData() 
{
    StringBuilder sb = new StringBuilder();
    foreach (var row in MyRows)
    {
        sb.Append("<tr><td>" + row.someProperty + "</td></tr>");
    }
    string myTableString = sb.ToString();

请注意,我上面给出的代码只是我对代码外观的最佳猜测-如果发布代码会容易得多!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过多处理分配共享内存时出现虚假的内存不足错误

内存不足错误:组装构建任务和浏览器同步手表

尝试启动Windows Phone模拟器时出现“内存不足...”错误

UglifyJSPlugin构建时出现内存不足错误

Python + Selenium首次加载时出现内存不足错误

从Uri加载位图时出现内存不足错误

在Android设备上调试时出现内存不足错误

找不到div类时出现“内存不足”错误

保存大文件时出现内存不足错误

使用AnimationDrawable时出现内存不足错误

显示图像时出现内存不足的android错误

多次重新加载活动时出现内存不足错误

在recyclerview中使用位图时出现内存不足错误

为什么我们的 Gmail 插件列表会导致浏览器内存不足?

为什么启动浏览器时出现“空间不足”错误?tmpdf?

内存不足错误图像加载器

在内存vb.net中创建大列表时出现内存不足错误

发布大文件时防止Jersey客户端引起内存不足错误

防止系统内存不足

搜寻器工作了几个小时后出现Jsoup内存不足错误

比较两个大型 xml 文件时出现内存不足错误

使用VisualVm分析堆转储时出现内存不足错误

在后台将图像加载到列表视图时出现“内存不足”错误

Perl:在运行时构建二维数组时出现内存不足错误

尝试在Raspberry Pi 3B上运行Lancache时出现“内存不足” Nginx错误

尝试实现超分辨率模型时出现内存不足错误

使用Java SDK API从Google云端硬盘下载文件时出现内存不足错误

加载Android活动的UI时出现Java内存不足错误

从头开始实施VGG16时出现内存不足错误