例如,在 Linux 上,如果您在源中初始化数据(而不是在运行时读取文件),则数据将存储在 .data 段中。该段的大小可以通过内核选项来限制。您可以使用 ulimit -d 找到当前限制。
在我的 Linux 和 macOS 机器上,我得到:
$ ulimit -d
unlimited
Run Code Online (Sandbox Code Playgroud)
为什么我想要配置 .data 段的大小限制?
ulimit -d
设置进程数据段的最大大小,而不仅仅是二进制文件的 .data 段的最大大小。您可以使用它来限制进程可以使用的内存量;根据POSIX:
RLIMIT_DATA
这是进程数据段的最大大小,以字节为单位。如果超过此限制,malloc()函数将失败,并将errno设置为 [ENOMEM]。
该限制适用于二进制文件,因为数据段受到限制的进程将无法使用exec
.data 段大于数据段限制的二进制文件。但此后该限制仍然适用,因此在进程运行时数据段的增长不能超过该限制。
与所有限制一样,这与许多场景相关。在多用户系统上,您需要设置限制,以便单个用户不能独占系统资源,或影响其他用户使用系统的能力。您还可以设置限制,以便单个进程不能独占系统资源(例如网络浏览器或大型构建......)。现在,您可能最好在 Linux 系统上使用 cgroup 之类的东西来进行此类资源控制。
归档时间: |
|
查看次数: |
5754 次 |
最近记录: |