可以通过运行显示一个进程的内存使用情况:
$ ps -C processname -o size
SIZE
3808
有没有什么方法可以在不执行 ps
(或任何外部程序)或读取 /proc
的情况下检索此信息?
最佳答案
在 Linux 系统上,可以通过读取 /proc/[pid]/statm
来查询进程的内存使用情况。其中 [pid]
是进程的 PID。如果一个进程想要查询自己的数据,它可以通过读取 /proc/self/statm
来实现。 man 5 proc
说:
/proc/[pid]/statm
Provides information about memory usage, measured in pages. The columns are: size total program size (same as VmSize in /proc/[pid]/status) resident resident set size (same as VmRSS in /proc/[pid]/status) share shared pages (from shared mappings) text text (code) lib library (unused in Linux 2.6) data data + stack dt dirty pages (unused in Linux 2.6)
您可以使用以下命令打开文件:fopen("/proc/self/statm", "r")
并阅读内容。
由于文件以“页面”形式返回结果,因此您还需要查找页面大小。 getpagesize ()
返回页面的大小,以字节为单位。
关于c - 如何在不调用外部程序的情况下测量进程的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11983672/