我想让一些应用程序在64位处理器(x86 xeon,8核心)上运行的64位操作系统中运行4 GB地址空间。我知道有一个选项可以使用-m32选项进行编译,但是此时我正在使用的计算机没有使用-m32进行编译所需的支持,所以我无法使用它,也无法安装因为我没有任何权利,所以在那台电脑上。
现在我的问题是,是否有可能将地址空间限制为4 GB。请不要问我为什么要这样做,只要告诉我如何做到这一点。感谢。
答案 0 :(得分:3)
您可以尝试使用setrlimit
通过RLIMIT_AS
属性在初始化过程中对进程施加虚拟内存限制。我以前曾使用setrlimit
增加资源分配到用户空间进程,但我不明白为什么它不能在其他方向上工作。
答案 1 :(得分:3)
ulimit / setrlimit机制,可以通过ulimit在bash中访问,可以做到这一点,但有一些小缺点。
ulimit -v 4000000
应将当前进程组的可用内存限制为4 GB。
但是,它会限制地址空间映射的总大小,并且不会限制映射的偏移量 - 你仍然可能有大于2 ^ 32的指针。