41 #elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__)) 43 #include <sys/resource.h> 45 #if defined(__APPLE__) && defined(__MACH__) 46 #include <mach/mach.h> 48 #elif (defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__))) 52 #elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__) 58 #error "Cannot define getPeakRSS( ) or getCurrentRSS( ) for an unknown OS." 74 PROCESS_MEMORY_COUNTERS info;
75 GetProcessMemoryInfo( GetCurrentProcess( ), &info,
sizeof(info) );
76 return (
size_t)info.PeakWorkingSetSize;
78 #elif (defined(_AIX) || defined(__TOS__AIX__)) || (defined(__sun__) || defined(__sun) || defined(sun) && (defined(__SVR4) || defined(__svr4__))) 82 if ( (fd = open(
"/proc/self/psinfo", O_RDONLY )) == -1 )
84 if ( read( fd, &psinfo,
sizeof(psinfo) ) !=
sizeof(psinfo) )
90 return (
size_t)(psinfo.pr_rssize * 1024L);
92 #elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__)) 95 getrusage( RUSAGE_SELF, &rusage );
96 #if defined(__APPLE__) && defined(__MACH__) 97 return (
size_t)rusage.ru_maxrss;
99 return (
size_t)(rusage.ru_maxrss * 1024L);
123 PROCESS_MEMORY_COUNTERS info;
124 GetProcessMemoryInfo( GetCurrentProcess( ), &info,
sizeof(info) );
125 return (
size_t)info.WorkingSetSize;
127 #elif defined(__APPLE__) && defined(__MACH__) 129 struct mach_task_basic_info info;
130 mach_msg_type_number_t infoCount = MACH_TASK_BASIC_INFO_COUNT;
131 if ( task_info( mach_task_self( ), MACH_TASK_BASIC_INFO,
132 (task_info_t)&info, &infoCount ) != KERN_SUCCESS )
134 return (
size_t)info.resident_size;
136 #elif defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__) 140 if ( (fp = fopen(
"/proc/self/statm",
"r" )) == NULL )
142 if ( fscanf( fp,
"%*d %ld", &rss ) != 1 )
148 return (
size_t)rss * 1024L;
Dynamic Memory Logger and Restorer (DyMeLoR)
size_t getCurrentRSS(void)
Memory usage module header.