【发布时间】:2011-05-16 08:56:01
【问题描述】:
ulimit -s 显示默认的stack大小limit。
是否有启动默认的堆大小?
【问题讨论】:
标签: c linux heap-memory glibc
ulimit -s 显示默认的stack大小limit。
是否有启动默认的堆大小?
【问题讨论】:
标签: c linux heap-memory glibc
没有
在 32 位 Linux 中,每个进程看到一个连续的 4GB 空间。大部分都没有映射到真实的 RAM,而是映射到使用情况。
在 64 位中它类似但更大。
【讨论】:
ulimit -s 不是“默认堆栈大小”。这是堆栈大小限制。您还可以使用ulimit 命令设置各种其他限制,并且对于每个限制都有一个“软”限制(应用程序可以根据需要覆盖)和一个“硬”限制(由操作系统强制执行,并且除非你有 root,否则一旦设置就不能取消设置。
【讨论】:
我不知道默认设置堆限制的任何发行版。您可以使用“ulimit -a”进行检查,您或您的系统管理员可以在 /etc/security/{limits.conf,limits.d} 中设置一个,因此您可能希望在那里查看是否设置了一个。
【讨论】:
没有堆限制,您的应用程序可以在 32 位机器上分配 3G vm(虚拟内存),但这并不意味着应用程序有 3G 物理内存可用,取决于您内核的 OOM 策略,它会被杀死内核的OOM(Out-Of-Memory)管理器根据这些内存的使用速度/多少。
【讨论】: