asp.net 引发类型为“System.OutOfMemoryException”的异常通常发生在IIS进程获取不到内存时。
临时解决方法是:
回收IIS的应用程序池。
如果要比较好的解决办法是:
1、检查系统代码,修复内存失控和发生泄漏的地方,如:可能的死循环,大量浪费内存的代码。
2、优化应用程序池的回收配置,限制内存使用的百分比。
如果要创建数组,请确保其大小正确。
确保有足够的内存用于内部用途和新的托管对象。
如果您正在 .NET Compact Framework 上进行编程,当没有足够的内存可用于内部用途或新的托管对象时,公共语言运行库会引发此异常。要避免此异常,应避免编写占用 64KB 或更多内存的大方法。
过多的托管内存使用量通常由以下因素造成:
- 将大型数据集读入内存中。
- 创建过多的缓存条目。
- 上载或下载大文件。
- 在分析文件时过多地使用正则表达式或字符串。
- 过多的视图状态。
- 会话状态中有过多的数据或者会话过多。
- 当对 COM 对象调用一个方法,并且该方法返回包含安全数组(大小不固定的数组)的用户定义类型时,可能引发此异常,并附带一条额外的消息“存储空间不足,无法完成此操作”。这是因为 .NET Framework 无法封送带有安全数组类型的结构字段。
可以参考:
http://www.cnblogs.com/emanlee/archive/2009/06/25/1511198.html
http://outofmemory.cn/c/dotNet-outOfMemoryException