Sie können den Aufruf von task_info von Mach verwenden, um diese Informationen zu finden. Hier ist der Code, der auf OS X v10.9 funktioniert, und die bekommt die virtuelle Prozessgröße des aktuellen Prozesses:
#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;
}
}
Ich denke, dass diese Shared-Memory-Segmente ausschließt, aber ich bin mir nicht sicher.
Werfen Sie einen Blick auf http://stackoverflow.com/questions/131303/linux-how-to-measure-actual-memory-usage-of-an-application-or-process –
Vielen Dank, aber dieser Artikel bezieht sich zu Werkzeugen, die nicht auf Mac verfügbar sind (/ proc, pmap, smem, htop, gcore) oder zu Dingen wie valgrind, die keine Option sind. Ich bin hauptsächlich auf der Suche nach einer Möglichkeit, den Speicher (RAM) und SWAP, die von einem Prozess verwendet werden, programmatisch zu finden. PS könnte funktionieren, aber das meldet es nicht. Ich hätte object-c anstelle von Kakao getaggt. Aber es wäre nicht besser. C/C++ - Aufrufe sind gut so lange wie sie auf einer MAC OS-Plattform platziert werden können. –