创建位图时出现内存泄漏

时间:2017-01-09 13:29:06

标签: asp.net-mvc memory-leaks bitmap

我在MVC应用程序中遇到了几个月的内存泄漏问题。我检查了每个新的Bitmap(因为我们在项目中使用了大量的位图) 我发现没有任何东西与我开发的代码有关,并且意识到每次我创建一个位图并处理它仍然有一些字节留在内存中。我想也许是一些设置,或其他东西正在吃记忆。所以我创建了一个新的MVC应用程序并将此方法添加到homecontroller中:

 public JsonResult BuildImageFromHDD()
 {

        for (int i = 0; i < 200; i++)
        {
            using (var myBitmap = new Bitmap(@"D:\temp\test\myJpg2.jpg"))
            {

            }               
        }
        return new JsonResult { Data = "done   " + DateTime.Now.Second.ToString(), JsonRequestBehavior = JsonRequestBehavior.AllowGet };

    }

此操作只创建200位图。当我将变量放在using块中时,我希望在操作被触发之后和之前看到为此应用程序分配的内存是相同的。如果我按动作20次,为我的应用程序池分配的内存从170 MG增加到210 MG,如果我继续使用该方法,内存会增加并稳步增加 我以为GC还没有收集到一些垃圾。我甚至打电话给GC.Collect();方法结束但没有区别。

现在考虑我们每10小时有200万个请求,如果每个20 * 200请求应该向内存添加40个MG,那么每10个小时我就会有大约10千兆内存泄漏。

我在IIS中监视应用程序轮询的内存分配。

该应用程序已在发布模式下构建。

0 个答案:

没有答案