Memory used by a process under mac os x

Given a PID, how can I get the memory currently used by a process ? Specifically I am looking for:

  • The private physical memory (RAM) used by the process
  • The swap space used by the process

But I am not interested in mapped files and shared memory. In short, I would like to determine how much memory (RAM and swap) would be freed by terminating the PID.

Answers


You can use Mach's task_info call to find this information. Here is code which works on OS X v10.9, and which gets the virtual process size of the current process:

#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;
  }
}

I think that this excludes shared memory segments, but I'm not sure.


Would this be useful? You can use the ps command with various options to get at least some of those things:

ps -o rss -o vsz -o pid

will give you the resident set size, the virtual size, and the process ID. I see from the man page that -o paddr gives the swap address, but I don't see which option gives you the swap size.


Need Your Help

Add striped styling to a list of items

knockout.js zebra-striping

What would be the best way to stripe a list with KnockoutJS? The class on the div below should be even or odd depending where it is in the list, and update when adding or removing items.

Way to implement handling duration of a keypress

c# input xna keypress

I'm using XNA (C#) to develop a 2D platformer.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.