如何让 Linux 中的进程“使用”内存? [复制]

Posted

技术标签:

【中文标题】如何让 Linux 中的进程“使用”内存? [复制]【英文标题】:How to get memory "used" by a process in Linux? [duplicate] 【发布时间】:2013-05-19 07:57:09 【问题描述】:

我的程序想要检测它正在使用多少内存并在它超过阈值时发出警告。我不关心已分配但从未访问过的内存,因为它不受 RAM 或交换的支持。如何获得我的进程使用的总 RAM + 交换? “驻留集大小”是否包括交换?

编辑:正如其他人指出的那样,获得常驻大小很容易,但不包括交换。所以这个问题实际上是关于如何获取进程使用的交换量。

【问题讨论】:

有一个 good question 关于那个 使用proc(5)文件系统,尤其是/proc/self/stat 该问题不提供交换,并且从 man 5 stat 开始,不维护 nswap 和 cnswap 字段。关于在哪里获得交换还有其他想法吗? 【参考方案1】:

已经有一个关于这个的帖子:How to get memory usage at run time in c++?

查看此页面:How to get the resident set size

RSS 是 RAM 部分,不包括交换和卸载。

【讨论】:

谢谢,那些回答了一半的问题,即从哪里获得 RSS。他们没有告诉我如何获得交换。 @Downvoter 为什么要投反对票? @MartinC.Martin 是的。我只知道如何获取 RSS :P

以上是关于如何让 Linux 中的进程“使用”内存? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Linux编程入门一System V共享内存

linux vfork的子程序与父进程共享内存,那为啥子进程执行exec就不会覆盖父进程呢?

linux vfork的子程序与父进程共享内存,那为啥子进程执行exec就不会覆盖父进程呢?

linux如何查看内存被哪些进程占用

在 Linux 中,如何判断进程正在使用多少内存?

Linux如何获取进程在物理内存中的所有内容?当进程在内存中的内容发生变化时,又如何获知?内核中实现