将地址空间大小保持为64位的4 GB

时间:2011-09-23 09:23:35

标签: c linux 64-bit x86

我想让一些应用程序在64位处理器(x86 xeon,8核心)上运行的64位操作系统中运行4 GB地址空间。我知道有一个选项可以使用-m32选项进行编译,但是此时我正在使用的计算机没有使用-m32进行编译所需的支持,所以我无法使用它,也无法安装因为我没有任何权利,所以在那台电脑上。

现在我的问题是,是否有可能将地址空间限制为4 GB。请不要问我为什么要这样做,只要告诉我如何做到这一点。感谢。

2 个答案:

答案 0 :(得分:3)

您可以尝试使用setrlimit通过RLIMIT_AS属性在初始化过程中对进程施加虚拟内存限制。我以前曾使用setrlimit 增加资源分配到用户空间进程,但我不明白为什么它不能在其他方向上工作。

答案 1 :(得分:3)

ulimit / setrlimit机制,可以通过ulimit在bash中访问,可以做到这一点,但有一些小缺点。

ulimit -v 4000000

应将当前进程组的可用内存限制为4 GB。

但是,它会限制地址空间映射的总大小,并且不会限制映射的偏移量 - 你仍然可能有大于2 ^ 32的指针。