我有一个代码库,有很多这样的:
byte[] contents = FileUtils.FileToByteArray(FileOfGartantuanProportions);
我不控制我的IIS服务器,所以我不能看到系统日志或做仪器,我只是能看到我的请求无法返回(死亡的白页),有时与YSOD内存不足错误。
有没有人有经验,什么是你可以加载了大部分数据到内存中之前IIS5或IIS6会杀了工作过程中或刚刚倒下了和死去的规则?
或者更好的是,有没有一个API调用我的化妆,是这样的:
if(!IsEnoughMemoryFor(FileOfGartantuanProportion.Length)) throw new SomeException() ;
在我的XP专业版的工作站我能得到一个ASP.NET页面成功地处理内存中的一个非常大的字节数组,但这些结果显然并不适用于真正的共享服务器。
据苔丝Ferrandez在TechEd的谈话,你就可以开始看东西有一个32位服务器上的内存例外,当你有关于在专用字节800MB或1.4GB的虚拟字节。
她还对为什么这是这里的好帖子:
一家餐馆的比喻
其他景点她做了包括想着你连载到会话什么 - 比如连载可能导致的每一页的服务器上使用内存15-20MB 1MB的数据集作为数据序列化和反序列化。
随着IIS6本机模式下,可以配置每个应用程序池的限制。
与IIS5它的使用在machine.config中作为总系统内存的百分比的元件配置 - 默认值是60%。
对于IIS 6,你可能会碰到内存回收限制 PeriodicRestartPrivateMemory和PeriodicRestartMemory。 我想在XP,它的物理内存的60%。 至少这是我所记得的,asp.net 1.1,我不知道约2.0
该YSOD可能是最与各地大型分配的try / catch处理。
文章来源: Rule of thumb for amount of usage memory it takes to make a worker process recycle?