inline long long sys_get_memory_kb()
{
#ifdef _MSC_VER
PROCESS_MEMORY_COUNTERS MEM;
GetProcessMemoryInfo(GetCurrentProcess(), &MEM, sizeof(MEM));
return MEM.WorkingSetSize / 1024;
#else
std::ifstream infile("/proc/self/status");
if (!infile.is_open())
return 0;
std::string strLine;
char name[128] = {0};
long long vmrss = 0;
int curr = 0;
while (!infile.eof())
{
getline(infile, strLine);
curr += 1;
if (curr == 16)
{
if (sscanf(strLine.c_str(), "%s %lld", name, &vmrss) == 2)
return vmrss;
break;
}
}
#endif
return 0;
}