Mongodb 为什么32位限制为2 GB而不是4 GB?

Mongodb 为什么32位限制为2 GB而不是4 GB?,mongodb,Mongodb,很抱歉提出这个愚蠢的问题,但当我发现由于内存映射方法的原因,MongoDB不能存储超过2 GB的内存时,但是: 2^32 = 4 GB 那么为什么限制只有2GB呢?这是因为: 2^(32-1) = 2 GB 这要归功于组织。4GB地址空间的一部分是为操作系统保留的(内核空间),因此只有一部分(用户空间,通常为2GB或3GB)可用于进程本身。内存映射文件必须符合此限制。这是由于组织的原因。4GB地址空间的一部分是为操作系统保留的(内核空间),因此只有一部分(用户空间,通常为2GB或3GB)可用

很抱歉提出这个愚蠢的问题,但当我发现由于内存映射方法的原因,MongoDB不能存储超过2 GB的内存时,但是:

2^32 = 4 GB
那么为什么限制只有2GB呢?这是因为:

2^(32-1) = 2 GB

这要归功于组织。4GB地址空间的一部分是为操作系统保留的(内核空间),因此只有一部分(用户空间,通常为2GB或3GB)可用于进程本身。内存映射文件必须符合此限制。

这是由于组织的原因。4GB地址空间的一部分是为操作系统保留的(内核空间),因此只有一部分(用户空间,通常为2GB或3GB)可用于进程本身。内存映射文件必须符合此限制。

因此进程需要
2^(32-1)
如果32位进程使用所有可用的虚拟内存(让它受到2GB的限制),它将使用2GB加上一些内存用于内核结构,但总共不超过4GB。现在我明白了,谢谢:)»在32位Microsoft Windows安装上,默认情况下,只有2GB可供进程自己使用。其他2GB由操作系统使用。那么,如果2GA已被修改为3MG(在Windows上),Mongodb是否会遵循它?因此,如果32位进程使用了所有可用的虚拟内存(让它受到2GB的限制),则进程需要
2^(32-1)
它将为内核结构使用2GB加上一些内存,但总共不超过4GB。现在我明白了,谢谢:)»在32位Microsoft Windows安装上,默认情况下,只有2GB可供进程自己使用。其他2GB由操作系统使用。那么,如果2GA已被修改为3MG(如Windows上所做的),Mongodb会遵循吗?