3

如 top 命令所见,在 Snow Leopard(64 位机器)中运行 32 位编译版 python 的单个进程是否可能消耗 > 4GB(例如 5.4GB)的虚拟内存?

file ...python发现二进制文件不是 x86,但它似乎消耗了超过 5GB 的内存。

我的猜测是,使用的库(RPy)是“mmap”数据块,并且内存缓存出现在我的进程的内存占用下。

或者也许我还没有验证 Python 二进制文件是 32 位的。或者也许有一些 32 位/64 位混合(libffi?)。

完全糊涂了。

4

2 回答 2

2

不,这在物理上是不可能的。由于对齐和碎片化,这并不能阻止操作系统分配超过它可以使用的内容,例如,它可能有一个完整的页面,但实际上并没有映射到所有页面。然而,实际上任何进程都不可能使用超过 4GB 的空间,而且很可能远低于内核空间。

于 2010-07-25T19:17:55.353 回答
1

如果进程正在使用某种疯狂的长/远/扩展指针并根据需要将数据映射到 32 位地址空间或从 32 位地址空间映射出数据,那么它是可能的,但在这一点上,它几乎不符合 32 位的要求(Python 绝对不会这样做,所以@DeadMG 的答案几乎可以肯定是实际发生的事情。)

于 2010-07-27T20:00:16.097 回答