与 32 位相比,ASP.NET 4.0 工作进程在 64 位中消耗的内存多 5 倍

标签 asp.net iis-7 64-bit 32bit-64bit wow64

我已将一个 ASP.NET v4.0 应用程序迁移到在 Win2008 Server x64 操作系统下运行的新服务器。由于当应用程序池设置为“启用 32 位应用程序”= False(在 x64 IIS 上应该是默认值)时,迁移的 asp.net 应用程序似乎没有问题,因此我让它在 64 位模式下运行。

事实证明,用户 session 经常被中断,因为工作进程很快就超过了其虚拟内存限制。出于这个原因,我只用一个修改过的设置测试了相同的应用程序和相同的应用程序池 - 我将“启用 32 位应用程序”切换为 True 以使其在“WOW64”模式下运行;其他一切都保持原样。我使用完全相同的用户工作场景比较了两种模式下工作进程消耗的内存量,结果让我有点震惊:

  • 工作量消耗约。在 WOW64 32 位模式下运行时为 150MB
  • 在“默认”64 位工作进程模式下,相同的工作负载消耗大约 800MB。

  • 我曾预料到在 64 位模式下工作进程可能会消耗更多的内存,但是这种差异太大了。

    如此巨大的内存影响被认为是正常的吗?是否有可能以某种方式减少/修复它?

    最佳答案

    经过更多调查,似乎没有内存问题.. 新服务器只是有更多内存,而在 64 位操作系统应用程序池上运行时,只允许分配更大的内存资源。它看起来像是内存泄漏,但由于从一定数量的已分配 RAM 中,该进程停止消耗额外的内存,因此它似乎根本不是内存问题。感谢所有回答者..

    关于与 32 位相比,ASP.NET 4.0 工作进程在 64 位中消耗的内存多 5 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993477/

    相关文章:

    c# - 在 VS2010 中的两个监视器上复制相同的页面(因此不完全 Split View)

    iis-7 - 为什么 IIS 要求声明 mime 类型?

    php - 从 Apache 迁移后 IIS7 上出现链接错误

    c++ - 在 Windows 8.1 上使用 clang-cl 64 位

    asp.net - Gridview 在列标题中排序向上/向下箭头

    c# - 什么变化 :accept-encoding mean?

    iis - 使用 appcmd 添加 ssl 绑定(bind)时出错

    python 线程内存使用 64 位与 32 位

    multithreading - 内存Barrer和可见性-x64

    c# - 想要在 asp.net c# 中使用 Resolve.url 时打开新选项卡