我正在开发一个导入大量数据的应用程序,在一些paralells线程中。
有时我得到了OutOfMemoryException(当我使用1.5,1.7GB的ram时)。
没什么大不了的,我以为我会把它变成64位程序(因为它不是那么大)。但由于.Net错误(64位不能有十进制的主键),我只能做64位程序。(description of the problem我发现了很多其他情况。我只是无法改变任何东西在这个数据库中,甚至不是类型或添加视图)。
我不需要比1.5-1-7GB的RAM多得多。如果我能达到2.5GB的价格,我会很高兴。
我读了一些关于“LARGEADDRESSAWARE”的内容,但我没有找到在我的visual studio上设置它的地方,以及大多数其他提示我应该修改boot.ini文件的提示。
但由于我的电脑已经是64位电脑(有8GB的内存),我觉得我不会在这里做点什么。
那么我应该怎么做才能访问那些3GB的ram?
答案 0 :(得分:1)
使用editbin设置LARGEADDRESSAWARE标志,如Can I set LARGEADDRESSAWARE from within Visual Studio?中建议的那样。
editbin /largeaddressaware $(TargetPath)
您需要运行x64版本的Windows或正如您所提到的32位系统更改Boot.ini,以允许应用程序使用3Gb的地址空间和/3GB开关。
答案 1 :(得分:0)
32位应用程序具有4GiB的虚拟地址空间。如果我没记错的话,默认情况下,Windows会将其分成2GiB用于应用程序(包括代码,堆栈,数据)和2GiB用于系统。
应该有一种方法可以将应用程序更改为3 GiB,为系统更改为1 GiB,但我认为在任何情况下都不能超越它。