x64进程可以占用4GB RAM多less内存

我有一个x64应用程序。 这是一个有点沉重的应用程序(在线程数,内存需求等方面)。 我在4GB RAM 64位Windows7四核心机器上运行此应用程序。 但是我注意到,我的应用程序需要大约2.2-2.3 GB的RAM,它崩溃了。 这是否需要行为? 最大的64位应用程序可以从4GB的内存只需要2.3-2.4 GB的RAM?

不,请先检查是否没有任何溢出或其他错误。 即使是32位的应用程序也可以解决这个问题 – 使用更多的RAM,所以如果在64位的Windows上受到限制,那将是荒谬的。

剩下的内存是免费使用的,对吧?

RAM的数量是没有关系的,一个进程分配虚拟内存。 可以在64位进程中分配的虚拟内存量仅受操作系统提供页面以将虚拟内存映射到RAM的能力的限制。 这通常只受最大允许的页面文件的限制,假定您没有使用CreateFileMapping()创建自己的映射。 这是一个系统设置,控制面板+系统+高级。 Windows版本也有一个上限,Windows 7家庭高级版有16 GB,Professional版本有192 GB。

RAM只在程序实际访问虚拟内存时使用。 当内存尚未映射时,会产生页面错误。 如果您在占用大量内存之前分配和使用内存,那么64位进程通常会由于这些页面错误而变慢,以致无法使用所有可用的页面。

由于你在典型的最大分页文件大小南部,这肯定是另一个普通的老堆腐败错误。

调试你的程序。 崩溃不应该是因为你分配了大量的内存而发生的。 通常的嫌疑犯:数学溢出,内存损坏,未能处理来自内存分配例程的错误。