[英]Memory used by a process under mac os x
給定PID,如何獲取進程當前使用的內存? 具體我正在尋找:
但我對映射文件和共享內存不感興趣。 簡而言之,我想確定通過終止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.