29 #ifndef MEMORY_USAGE_INCLUDED
30 #define MEMORY_USAGE_INCLUDED
38 size_t TotalPhysicalMemory;
39 size_t FreePhysicalMemory;
40 size_t TotalSwapSpace;
42 size_t TotalVirtualAddressSpace;
43 size_t FreeVirtualAddressSpace;
49 ZeroMemory( &
Mem,
sizeof(
Mem));
50 ZeroMemory( &Info,
sizeof(Info));
51 Mem.dwLength =
sizeof(
Mem);
52 ::GlobalMemoryStatusEx( &
Mem );
53 ::GetSystemInfo( &Info );
55 TotalPhysicalMemory = (size_t)
Mem.ullTotalPhys;
56 FreePhysicalMemory = (
size_t)
Mem.ullAvailPhys;
57 TotalSwapSpace = (size_t)
Mem.ullTotalPageFile;
58 FreeSwapSpace = (
size_t)
Mem.ullAvailPageFile;
59 TotalVirtualAddressSpace = (size_t)
Mem.ullTotalVirtual;
60 FreeVirtualAddressSpace = (
size_t)
Mem.ullAvailVirtual;
61 PageSize = (size_t)
Info.dwPageSize;
63 size_t usage(
void)
const {
return TotalVirtualAddressSpace-FreeVirtualAddressSpace;}
65 static size_t Usage(
void){
66 MEMORY_BASIC_INFORMATION mbi;
71 memset(&mbi, 0,
sizeof(MEMORY_BASIC_INFORMATION));
72 while(VirtualQuery(pvAddress, &mbi,
sizeof(MEMORY_BASIC_INFORMATION)) ==
sizeof(MEMORY_BASIC_INFORMATION)){
73 if(mbi.State == MEM_COMMIT && mbi.Type == MEM_PRIVATE){dwMemUsed += mbi.RegionSize;}
74 pvAddress = ((
BYTE*)mbi.BaseAddress) + mbi.RegionSize;
85 #include <sys/resource.h>
92 FILE* f = fopen(
"/proc/self/stat",
"rb");
97 unsigned long long llu;
104 int n = fscanf(f,
"%d %s %c %d %d %d %d %d %lu %lu %lu %lu %lu %lu %lu %ld %ld %ld %ld %d %ld %llu %lu %ld %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %d %d %lu %lu"
105 ,&pid ,s ,&c ,&d ,&d ,&d ,&d ,&d ,&lu ,&lu ,&lu ,&lu ,&lu ,&lu ,&lu ,&ld ,&ld ,&ld ,&ld ,&d ,&ld ,&llu ,&vm ,&ld ,&lu ,&lu ,&lu ,&lu ,&lu ,&lu ,&lu ,&lu ,&lu ,&lu ,&lu ,&lu ,&lu ,&d ,&d ,&lu ,&lu );
165 #include <sys/types.h>
166 #include <sys/sysctl.h>
167 #include <mach/task.h>
168 #include <mach/mach_init.h>
170 void getres(task_t task,
unsigned long *rss,
unsigned long *vs)
172 struct task_basic_info t_info;
173 mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT;
175 task_info(task, TASK_BASIC_INFO, (task_info_t)&t_info, &t_info_count);
176 *rss = t_info.resident_size;
177 *vs = t_info.virtual_size;
183 static size_t Usage(
void)
185 unsigned long rss, vs, psize;
186 task_t task = MACH_PORT_NULL;
188 if (task_for_pid(current_task(), getpid(), &task) != KERN_SUCCESS)
190 getres(task, &rss, &vs);
static size_t Usage(void)
static void usage(int showDetail)