Memory C#内存不足错误

Memory C#内存不足错误,memory,Memory,我花了好几个小时想弄明白。当它执行时,它将一直运行,直到系统内存耗尽。 我试着处理使用后创建的bmp,没有任何区别。 我也尝试过处理webbrowser,但是我需要以正确的高度/宽度等循环运行网页来捕获它。 我试着创建一个新的webbrowser,它会循环所有东西,然后进行处理,但无法工作。 有人能看到这里发生了什么吗 循环: wbcondor1.AllowNavigation = true; wbcondor1.DocumentCompleted += new

我花了好几个小时想弄明白。当它执行时,它将一直运行,直到系统内存耗尽。 我试着处理使用后创建的bmp,没有任何区别。 我也尝试过处理webbrowser,但是我需要以正确的高度/宽度等循环运行网页来捕获它。 我试着创建一个新的webbrowser,它会循环所有东西,然后进行处理,但无法工作。 有人能看到这里发生了什么吗

循环:

        wbcondor1.AllowNavigation = true;
        wbcondor1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wbcondor1_DocumentCompleted);
        wbcondor1.Navigate("blanked out");
文件已完成

  private void wbcondor1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        Bitmap condor1bmp = new Bitmap(600, 1000);
        wbcondor1.DrawToBitmap(condor1bmp, new Rectangle(wbcondor1.Location.X, wbcondor1.Location.Y, wbcondor1.Width, wbcondor1.Height));

        if (Convert.ToString(condor1bmp.GetPixel(553, 558)) == "Color [A=255, R=232, G=30, B=48]") { c1to1.Text = "lower"; }
        if (Convert.ToString(condor1bmp.GetPixel(553, 584)) == "Color [A=255, R=232, G=30, B=48]") { c1to2.Text = "lower"; }
        if (Convert.ToString(condor1bmp.GetPixel(553, 608)) == "Color [A=255, R=232, G=30, B=48]") { c1to3.Text = "lower"; }
        if (Convert.ToString(condor1bmp.GetPixel(553, 633)) == "Color [A=255, R=232, G=30, B=48]") { c1to4.Text = "lower"; }
        if (Convert.ToString(condor1bmp.GetPixel(553, 658)) == "Color [A=255, R=232, G=30, B=48]") { c1to5.Text = "lower"; }

        if (Convert.ToString(condor1bmp.GetPixel(553, 558)) == "Color [A=255, R=0, G=175, B=88]") { c1to1.Text = "higher"; }
        if (Convert.ToString(condor1bmp.GetPixel(553, 584)) == "Color [A=255, R=0, G=175, B=88]") { c1to2.Text = "higher"; }
        if (Convert.ToString(condor1bmp.GetPixel(553, 608)) == "Color [A=255, R=0, G=175, B=88]") { c1to3.Text = "higher"; }
        if (Convert.ToString(condor1bmp.GetPixel(553, 633)) == "Color [A=255, R=0, G=175, B=88]") { c1to4.Text = "higher"; }
        if (Convert.ToString(condor1bmp.GetPixel(553, 658)) == "Color [A=255, R=0, G=175, B=88]") { c1to5.Text = "higher"; }
        // bmp.Save("condor1.gif");
        condor1bmp.Dispose();
    }

谢谢大家,希望有人能看到我遗漏了什么:(

如果抛出异常

condor1bmp.Dispose();
将不会被调用

始终使用using语句包装实现IDisposable的内容

除此之外,在使用位图时,除了实际内存不足之外,还有很多事情可能会导致OutOfMemoryException

有关几种可能性,请参阅


您的压力测试可能遇到了这些情况吗?

只是为了让人们知道是谁遇到了这个错误。x行内存不足。这是internet explorer本身的问题。可以通过在IE设置中打开活动脚本来禁用javascript来停止测试。

注释您的逻辑的每个部分,直到泄漏消失例如,注释掉
wbcondor1\u DocumentCompleted()的主体
--你最终还是会耗尽内存吗?我甚至没有想过要这么做。只是这样做了,它仍然会耗尽,只是在每个循环中不断构建。那么这个块不是你问题的根源。在分析器中运行你的代码,寻找大量的分配,或者大量的小分配,然后尝试跟踪它们的位置ming from.现在代码非常简单,它只是一个webbrowser和每隔x秒转到x网站的命令:可能浏览器历史记录太大了。使用探查器Luke。我刚刚注释了文档完成部分,它仍然会上升,这意味着每次我告诉webbrowser刷新内存生成的页面时每次