61 PROCESS_MEMORY_COUNTERS info;
62 GetProcessMemoryInfo( GetCurrentProcess( ), &info,
sizeof(info) );
63 return (
size_t)info.PeakWorkingSetSize;
65#elif (defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__)))
69 if ( (fd = open(
"/proc/self/psinfo", O_RDONLY )) == -1 )
71 if ( read( fd, &psinfo,
sizeof(psinfo) ) !=
sizeof(psinfo) )
77 return (
size_t)(psinfo.pr_rssize * 1024L);
79#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
82 getrusage( RUSAGE_SELF, &rusage );
83#if defined(__APPLE__) && defined(__MACH__)
84 return (
size_t)rusage.ru_maxrss;
86 return (
size_t)(rusage.ru_maxrss * 1024L);
107 PROCESS_MEMORY_COUNTERS info;
108 GetProcessMemoryInfo( GetCurrentProcess( ), &info,
sizeof(info) );
109 return (
size_t)info.WorkingSetSize;
111#elif defined(__APPLE__) && defined(__MACH__)
113 struct mach_task_basic_info info;
114 mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT;
115 if ( task_info( mach_task_self( ), MACH_TASK_BASIC_INFO,
116 (task_info_t)&info, &infoCount ) != KERN_SUCCESS )
118 return (
size_t)info.resident_size;
120#elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__)
124 if ( (fp = fopen(
"/proc/self/statm",
"r" )) == NULL )
126 if ( fscanf( fp,
"%*s%ld", &rss ) != 1 )
132 return (
size_t)rss * (size_t)sysconf( _SC_PAGESIZE);
172#if defined(_WIN32) && (defined(__CYGWIN__) || defined(__CYGWIN32__))
176 status.dwLength =
sizeof(status);
177 GlobalMemoryStatus( &status );
178 return (
size_t)status.dwTotalPhys;
183 MEMORYSTATUSEX status;
184 status.dwLength =
sizeof(status);
185 GlobalMemoryStatusEx( &status );
186 return (
size_t)status.ullTotalPhys;
188#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__))
192#if defined(CTL_HW) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM64))
195#if defined(HW_MEMSIZE)
197#elif defined(HW_PHYSMEM64)
198 mib[1] = HW_PHYSMEM64;
201 size_t len =
sizeof( size );
202 if ( sysctl( mib, 2, &size, &len, NULL, 0 ) == 0 )
206#elif defined(_SC_AIX_REALMEM)
208 return (
size_t)sysconf( _SC_AIX_REALMEM ) * (size_t)1024L;
210#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE)
212 return (
size_t)sysconf( _SC_PHYS_PAGES ) *
213 (size_t)sysconf( _SC_PAGESIZE );
215#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGE_SIZE)
217 return (
size_t)sysconf( _SC_PHYS_PAGES ) *
218 (size_t)sysconf( _SC_PAGE_SIZE );
220#elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM))
224#if defined(HW_REALMEM)
226#elif defined(HW_PYSMEM)
229 unsigned int size = 0;
230 size_t len =
sizeof( size );
231 if ( sysctl( mib, 2, &size, &len, NULL, 0 ) == 0 )