memory-management - 4GB 进程如何在仅 2GB RAM 上运行?

标签 memory-management operating-system out-of-memory virtual-memory

假设 32 位/64 位处理器可以在 2GB RAM 上运行 4GB 进程。它会使用虚拟内存还是根本无法运行?

最佳答案

这高度依赖于平台。在许多 32 位操作系统上,无论安装的物理内存或分配的虚拟内存如何,单个进程都不能使用超过 2GB 的内存。

例如,我的工作计算机使用带有 PAE(物理地址扩展)的 32 位 Linux,以允许安装 16GB 的 RAM。不过,每个进程 2GB 的限制仍然适用。拥有额外的 RAM 可以让我运行更多单独的进程。 32位Windows也是同样的方法。

64 位操作系统更是鱼龙混杂。 64 位 Linux 将允许单个进程映射超过 32GB 的内存(但同样,因内核而异)。您将仅受您拥有的交换(Linux 虚拟内存)量的限制。 64 位 Windows 完全是垃圾。某些版本仅允许每个进程 2GB,但大多数版本允许 >32GB,仅受用户分配的页面文件量的限制。

微软提供了一个有用的table打破各种操作系统版本/版本的各种内存限制。不幸的是,我通过粗略搜索 Linux 找不到这样的表,因为它是如此分散。

关于memory-management - 4GB 进程如何在仅 2GB RAM 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24869800/

相关文章:

c - 为什么在编译时声明时数组大小受到限制?

c - 将从系统调用 open() 打开的文件传递给函数

python - 有没有办法在 Python 中以特定用户身份执行命令?

c - 如何为数据采集硬件实现 Linux 设备驱动程序?

Tomcat 7.0.27更新后启动报错

c++ - 等号是否在 char * 中重新分配内存?

c++ - 减少内存使用,C,CodeChef

java - 应用程序停止工作

c++ - 如何将 2D vector 大小与操作系统内存地址限制进行比较?

memory - h2o 包 : total cluster memory zero