linux - 如何确定进程的内存量?

标签 linux memory process heap-memory stack-memory

据我了解,当一个进程正在执行时,它有一定数量的内存可供使用。随着堆栈大小的增加,它从进程的一端构建(忽略堆栈之前的全局变量),而堆从另一端构建。如果您不断地向堆栈或堆中添加内容,最终所有内存都将用于此过程。

如何确定给定进程的内存量?我只能想象它取决于一堆不同的变量,但尽可能一般的响应会很好。如果事情必须变得具体,我对用 C++ 编写的 linux 进程很感兴趣。

最佳答案

在您会遇到的大多数平台上,Linux 在启用虚拟内存的情况下运行。这意味着每个进程都有自己的虚拟地址空间,其大小仅由硬件和内核配置它的方式决定。

例如,在具有“3/1”拆分配置的 x86 架构上,每个 用户空间进程都有 3GB 的可用地址空间,其中分配了堆和堆栈。这与系统中有多少物理 内存可用无关。在 x86-64 架构上,每个用户空间进程通常有 128TB 的地址空间可用。

物理内存是单独分配给虚拟内存的。进程可用的数量取决于系统的配置,但通常它只是“按需”提供 - 主要限制存在多少物理内存和交换文件空间,以及当前用于其他目的的数量.

关于linux - 如何确定进程的内存量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396023/

相关文章:

Linux 权限、apache 和 Cron 选项卡

python - debian jessie 无法安装模块和执行升级

linux - 将单词放到行中的特定位置

c++ - 将智能指针传递给需要 void* 的函数?

node.js 子进程 - spawn 和 fork 之间的区别

c - Unix 进程 PIPE

Python:在后台运行带重定向的bash命令并获取进程ID

c - 在 Linux 中使用 c 私有(private)内存使用量不断增加

java - 使用 java beans/command/java class 和 getter setter 几乎每个地方都相同是很好的实践

Python multiprocessing - 检查每个进程的状态