[英]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.