允许进程使用超过4GB的RAM

时间:2017-03-29 05:50:04

标签: c++ ubuntu ram

我在一台8GB RAM的机器上运行64位Ubuntu 12.04。我编写了一个C ++程序,我使用gcc中的-m64(强制64位可执行文件)标志编译。我检查了生成的可执行文件确实是64位。

然而,该过程限制使用4GB RAM。我怎样才能让它使用更多?

编辑:ulimit -a的输出

ulimit -a
core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 62900

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 62900

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

编辑2:链接到dstat -cdgms --vm

的输出

https://www.dropbox.com/s/927s5x6v4bhp4qs/dstat_log.xlsx?dl=0

1 个答案:

答案 0 :(得分:0)

尽我所知,添加-m64编译标志(强制64位可执行文件)实际上解决了我的初始问题(应用程序崩溃),接下来是巧合,我的应用程序实际上需要的内存超过4GB(限制对于32位可执行文件,它在系统监视器中显示为4GB平面。感谢所有贡献者,评论中有很多内容可以帮助人们尝试诊断类似的问题。