x64 进程可以在 4GB RAM 上占用多少内存

How much memory can x64 process can take on 4GB RAM

本文关键字:多少 内存 RAM 4GB 进程 x64      更新时间:2023-10-16

我有一个x64应用程序。这是一个有点繁重的应用程序(在线程计数、所需内存等方面)。我在 4GB RAM 64 位 Windows7 四核机器上运行此应用程序。但我注意到的是,在我的应用程序占用大约 2.2-2.3 GB RAM 后,它会崩溃。这是行为所必需的吗?64 位应用程序最多只能从 2.3GB RAM 中占用 2.3-2.4 GB RAM 吗?

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

剩余的内存可供免费使用,对吧?

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

仅当程序实际访问虚拟内存时才使用 RAM。 当内存尚未映射时,这将生成页面错误。 如果在使用所有可用页面之前分配和使用内存远远超出 RAM 量,则 64 位进程通常会由于这些页面错误而减慢到爬网速度。

由于您距离典型的最大分页文件大小相当南,因此这肯定只是另一个普通的旧堆损坏错误。

调试程序。崩溃不应该仅仅因为您分配了大量内存而发生。通常的嫌疑人:数学溢出、内存损坏、无法处理内存分配例程的错误。