2012-01-29 42 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