C#程序出现内存溢出错误的解决办法
上周一个C#开发的站点出现了内存溢出错误:“引发类型为“System.OutOfMemoryException”的异常”
因为页面众多一时最初难以确定问题源,找了很久才发现了导致内存溢出的代码。把这次的方法总结一下。
症状:每个一段时间才会出现内存溢出的错误,服务器上会出现大量的页面请求被堵塞。回收iis程序池后,会短暂正常,但是过一段时间后又出现内存溢出,时间间隔长短不一,没有规律。
解决步骤:1,判断是某个页面被请求到时引发的内存溢出错误。
2,寻找有问题的页面
存在内存溢出错误代码的页面,当被请求时,应该不会被执行结束。
所以,通过OnPreInit方法,在所有页面被请求时,将该页面的地址,请求时间记录到数据库中。每次请求都会在数据库中增加一条记录。
在页面执行到OnUnload方法时,再将该页面的总执行时间更新到上面提到的请求记录中。(新增时,总执行时间默认为-1)
通过上述方式,分析几次内存溢出发生时,没有被执行结束的页面。最终确定的问题页面所在,修改代码上传后,内存溢出问题解决。