2012-01-29 94 views
1

我正在尝试获取运行在LINUX上的C++应用程序中给定PID的内存工作集值。在Windows中,我可以使用GetProcessWorkingSetSize函数获取此信息。有什么可以在LINUX中调用的函数吗?LINUX中的进程工作集信息

回答

1

想到的唯一明智的解决方案是通过/proc文件系统访问相关信息。看起来很奇怪,一个进程将不得不从/proc中读出它自己的信息,但我不知道任何其他系统调用可能会使这个更容易。

你可能最感兴趣的是位于/proc/[pid]/statm的信息,其中包括:

  • 整个程序的大小,
  • 驻留集大小,
  • 共享页面,
  • 文本(代码)大小,
  • 库(未在Linux 2.6中使用),
  • 数据和堆栈大小,
  • 脏页(Linux 2.6中未使用)。

请记住,所有这些测量都是以页数的形式给出的。

+1

请注意'/ proc/[pid]/status'以可读的形式提供此信息 – Nemo 2012-01-29 23:24:10

+0

谢谢。这说得通。有没有我可以调用的函数而不是读取/ proc条目? Sysctl是最强烈的嫌疑犯,但我找不到任何方法来获取特定进程的内存信息。 – 2012-01-30 14:31:08