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