2010-07-25 106 views
3

是否有可能在雪豹(64位计算机)上运行蟒一个32位编译版本的单个过程出现由顶命令所看到消耗> 4GB的虚拟内存(说5.4GB)?运行32位编译二进制文件的进程是否可以使用超过4GB的内存?

我做了file ...python看到二进制不是86,但它似乎是在消耗的内存5GB。

我的猜测是,(RPY)中使用的库是“数据的mmap'ing块,并且在内存中缓存被我的进程的内存占用量下出现的。

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

完全困惑。

+0

“看到二进制文件不是x86” - 那它是什么? x86 == 32位,x64 = 64位。 – 2010-07-25 19:21:00

+0

@Henk:其实,大多数消费者的CPU现在是x86_64的 - 的CPU支持64位*仅*和不支持32位(即64)是相当少见 – Daenyth 2010-07-25 19:46:46

+0

@Daen,我说的是二进制文件,以及最常见的他们的面额。 – 2010-07-25 19:55:28

回答

2

不,这实际上是不可能的。这并不能阻止操作系统的分配,因为对齐和碎片可能导致的分配量比它可以使用的要多,也就是说,它可能会有整个页面,而实际上并不是全部映射的。然而,对于任何进程实际使用超过4GB是不可能的,并且很可能远远低于内核空间。

+0

该限制大部分时间略超过3GB,程序的作者需要特别要求使用那么多内存的能力(默认限制为2GB)。这适用于Windows,不了解Linux。 – PeterK 2010-07-27 20:03:58

+0

@peterK:确切的限制并不重要。重要的是它在5.4 GB的南部。 – Puppy 2010-07-27 22:31:37

+0

我知道,只是想添加一些更多的信息。 – PeterK 2010-07-28 06:24:31

0

它是可能如果在该过程中使用某种疯长/远/扩展指针和映射数据的流入和outof因为它需要它32位的地址空间,但是在该点它算不上32无论如何。 (Python绝对是而不是这样做,所以@ DeadMG的答案几乎肯定是实际发生的事情。)

+0

首映CS4使用另一种方法,那就是加载另一个进程的内存4GB的每个,使整个程序可以访问不亚于现有的物理内存 – 2013-09-02 05:34:35

+0

@LưuVĩnhPhúc,如果你这样做,你必须有2.6GB和另一个进程与2.8GB(或沿着这些线),而不是一个5.4GB的进程。 (这是处理地址空间约束的好方法,但这里并不真正适用。) – 2013-09-02 23:42:27

+0

当然,这是2个(或更多)单独的进程,但他们正在使用一些进程互连在彼此之间传输日期。无论如何,Premiere cs5及以上版本都支持32位环境 – 2013-09-02 23:58:26