64位机器上的系统内存不足?

时间:2012-07-16 17:06:32

标签: asp.net memory 64-bit out-of-memory

我有一个带有其他6个类库项目的asp.net应用程序。在我的一个主类库项目中,我缓存了一些静态数据库表。 Webdev.webserver40.exe达到约1.5 GB并且它抛出“系统内存不足异常”。我知道在32位机器上我限制了2 GB的进程大小,但我的开发人员机器是64位,64位不应该有限制。好的,我看到你说你的Asp.net应用程序无论如何都要运行32位,即使我有64位机器。因此我得到了例外。但是我该怎么做才能解决这个问题呢?

  • 我打开配置管理器并尝试将所有类库更改为x64,但我无法更改我的主网站项目。这就是为什么在32位网站上无法识别64个引用的原因。

请不要告诉我,我应该做本地数据库或其他一些选项,而不是缓存到内存中:)好吧,这些也是其他选项,但我想知道,如果在内存中有任何反正。我需要缓存超过2GB甚至。

PS,在Debug选项卡下是什么“启用VS主机进程”选项。它会影响我的问题吗?我试过检查和取消选中,没有任何改变。确实看起来检查它效果更好,但我仍然得到例外。

编辑1:当我发现帖子时,它告诉我如果在64位操作系统上运行32位应用程序,我应该最多2800 MB。进程大小,但为什么它不允许我这样做并在1500mb左右抛出异常。

http://blogs.msdn.com/b/tom/archive/2008/04/10/chat-question-memory-limits-for-32-bit-and-64-bit-processes.aspx

编辑2:我尝试在类库的app.config中添加该代码,我在其中进行缓存以及在msdn上建议的web.config中它只说框架4.5但我使用的是4.0。 4.0上有类似的黑客攻击吗?因为我不确定我是否应该安装并开始使用4.5,而不是最后一次发布。

<runtime>
  <gcAllowVeryLargeObjects enabled="true" />
</runtime>

感谢您的帮助。 问候。

2 个答案:

答案 0 :(得分:4)

您可以将IIS express设置为在visual studio中运行64位:

转到Visual Studio - 工具 - 选项菜单

选择: - 项目和解决方案,然后选择Web项目

勾选复选框:&#34;为网站和项目使用64位版本的IIS Express&#34;

无需编辑注册表。

答案 1 :(得分:1)

我可能错了,但我相信Webdev.webserver40.exe(a.k.a。Cassini)是一个32位的本机C ++应用程序。

在您的asp.net网站项目属性页面中,选中“使用IIS Express”框,看看是否能解决您的问题

编辑: 检查这些事情 -

  1. 检查您确实有足够的RAM来保存数据
  2. 确保交换文件驱动器上有足够的可用硬盘空间
  3. 确定您的交换文件是动态还是固定大小