gpt4 book ai didi

linux - 为什么进程在 4GB 时被杀死?

转载 作者:IT王子 更新时间:2023-10-29 00:36:30 26 4
gpt4 key购买 nike

我编写了一个处理大量数据的程序。我的 CPU 和操作系统 (Ubuntu) 都是 64 位的,我有 4GB 的内存。使用“top”(%Mem 字段),我看到进程的内存消耗上升到大约 87%,即 3.4+ GB,然后它被杀死了。

然后我使用“uname -m”检查一个进程可以访问多少内存,结果是“无限制”。

现在,由于操作系统和 CPU 都是 64 位的,并且还存在一个交换分区,操作系统应该使用虚拟内存,即总共 [ >3.4GB + yGB from swap space ] 并且仅当进程需要更多时内存,它应该被杀死。

所以,我有以下问题:

  1. 一个进程理论上可以在 64 位 m/c 上访问多少物理内存。我的答案是 2^48 字节。
  2. 如果存在少于 2^48 字节的物理内存,那么操作系统应该使用虚拟内存,对吗?
  3. 如果上述问题的答案是肯定的,那么操作系统也应该使用了 SWAP 空间,为什么它甚至在没有使用它的情况下终止了进程。我不认为我们必须使用一些特定的系统调用来编写我们的程序来实现这一点。

请提出建议。

最佳答案

不仅仅是数据大小可能是原因。例如,执行 ulimit -a 并检查最大堆栈大小。你有杀人的理由吗?设置 'ulimit -c 20000' 得到一个核心文件,当你用 gdb 检查它时它会告诉你原因。

关于linux - 为什么进程在 4GB 时被杀死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8694607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com