IIS 内存溢出(32位程序运行)

背景

最近新接手了一个项目,服务器正常,用户量也没有变化,不定时出现内存溢出,重启iis或者回收线程就正常了
review发现,因为业务原因缓存的东西并没有释放掉,但远远没有达到服务器内存上线,也没有受到预警邮件
巴拉很久,发现32位系统存在内存上限

为什么 32 位程序只能使用最大 2GB 内存: Link

32 位寻址空间只有 4GB 大小,于是 32 位应用程序(进程)最大只能用到 4GB 的内存。
然而,除了应用程序本身要用内存,操作系统内核也需要使用。
应用程序使用的内存空间分为用户空间和内核空间,每个 32 位程序的用户空间可独享前 2GB 空间(指针值为正数),而内核空间为所有进程共享 2GB 空间(指针值为负数)。
所以,32 位应用程序实际能够访问的内存地址空间最多只有 2GB

怎么判断应用是32位

1.看项目生成的时候是否选中:32位
2.IIS管理器  / 应用程序池 / 选择所需的应用程序池 / 高级设置 / 启用32位应用程序
3.任务管理器,查看w3wp.exe。如果它显示为w3wp*32.exe,那么它就是32位的

 

Reference

Visual Studio编译出的程序,以32位模式运行的问题与解决
如何检查IIS是处于32位模式还是64位模式
32位应用程序如何使用大于2GB的内存?
posted @ 2023-04-21 13:33  Robot-Blog  阅读(414)  评论(0编辑  收藏  举报