1

我正在开发一个在一些并行线程中导入大量数据的应用程序。

有时我得到 OutOfMemoryException(当我使用 1.5、1.7GB 的内存时)。

没什么大不了的,我想我会把它做成一个 64 位的程序(因为它不是那么大)。但是由于一个.Net错误(不能有一个64位的十进制主键),我不能制作一个64位程序。(问题的描述,我发现了许多其他情况。我只是不能改变任何东西这个数据库,甚至没有一个类型或添加一个视图)。

我只需要 1.5-1-7GB 的 RAM。如果我能达到 2.5GB,我会很高兴。

我读了一些关于“LARGEADDRESSAWARE”的东西,但我没有找到在我的视觉工作室上设置它的地方,以及大多数其他提示我应该修改 boot.ini 文件。

但由于我的计算机已经是 64 位计算机(具有 8GB 的​​内存),我认为我不必在这里做任何事情。

那么我应该怎么做才能访问那些 3GB 的内存呢?

4

2 回答 2

1

使用 editbin 设置 LARGEADDRESSAWARE 标志,如我可以从 Visual Studio 中设置 LARGEADDRESSAWARE 吗?.

editbin /largeaddressaware $(TargetPath) 

您需要运行 x64 版本的 Windows,或者如您提到的 32 位系统更改 Boot.ini 以允许应用程序使用 3Gb 的地址空间和/3GB开关。

于 2012-09-18T04:46:36.850 回答
0

一个 32 位应用程序有 4GiB 的虚拟地址空间。如果我没记错的话,Windows 默认将其拆分为 2GiB 用于应用程序(包括代码、堆栈、数据)和 2GiB 用于系统。

应该有一种方法可以将应用程序更改为 3 GiB,系统更改为 1 GiB,但我认为无论如何您都无法超越。

于 2012-09-18T05:01:32.920 回答