簡體   English   中英

mac os x下進程使用的內存

[英]Memory used by a process under mac os x

給定PID,如何獲取進程當前使用的內存? 具體我正在尋找:

  • 進程使用的專用物理內存(RAM)
  • 進程使用的交換空間

但我對映射文件和共享內存不感興趣。 簡而言之,我想確定通過終止PID釋放多少內存(RAM和交換)。

這有用嗎? 您可以使用帶有各種選項的ps命令來獲取至少其中一些內容:

ps -o rss -o vsz -o pid

將為您提供駐留集大小,虛擬大小和進程ID。 我從man頁面看到-o paddr給出了交換地址,但是我沒有看到哪個選項給你交換大小。

您可以使用Mach的task_info調用來查找此信息。 以下是適用於OS X v10.9的代碼,它獲取當前進程的虛擬進程大小:

#include <mach/mach.h>
#include <mach/message.h>  // for mach_msg_type_number_t
#include <mach/kern_return.h>  // for kern_return_t
#include <mach/task_info.h>
#include <stdio.h>

int main(void) {
  kern_return_t error;
  mach_msg_type_number_t outCount;
  mach_task_basic_info_data_t taskinfo;

  taskinfo.virtual_size = 0;
  outCount = MACH_TASK_BASIC_INFO_COUNT;
  error = task_info(mach_task_self(), MACH_TASK_BASIC_INFO, (task_info_t)&taskinfo, &outCount);
  if (error == KERN_SUCCESS) {
    // type is mach_vm_size_t
    printf("vsize = %llu\n", (unsigned long long)taskinfo.virtual_size);
    return 0;
  } else {
    printf("error %d\n", (int)error);
    return 1;
  }
}

我認為這不包括共享內存段,但我不確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM