MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / GetProcessMemInfo

Function GetProcessMemInfo

ogsr_engine/xrCore/xrMemory.cpp:89–133  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

87u32 xrMemory::mem_usage(u32* pBlocksUsed, u32* pBlocksFree) { return u32(mem_usage_impl(pBlocksUsed, pBlocksFree)); }
88
89void GetProcessMemInfo(SProcessMemInfo& minfo)
90{
91 std::memset(&minfo, 0, sizeof(SProcessMemInfo));
92
93 MEMORYSTATUSEX mem;
94 mem.dwLength = sizeof(mem);
95 GlobalMemoryStatusEx(&mem);
96
97 minfo.TotalPhysicalMemory = mem.ullTotalPhys;
98 minfo.FreePhysicalMemory = mem.ullAvailPhys;
99
100 minfo.TotalPageFile = mem.ullTotalPageFile - mem.ullTotalPhys;
101
102 if (minfo.TotalPageFile > 0l)
103 {
104 // эта херня погоду показывает на самом деле. надо найти способ как получить свободный размер файла подкачки
105 minfo.FreePageFile = mem.ullAvailPageFile > mem.ullAvailPhys ? mem.ullAvailPageFile - mem.ullAvailPhys : mem.ullAvailPageFile;
106 }
107
108 minfo.MemoryLoad = mem.dwMemoryLoad;
109
110 PROCESS_MEMORY_COUNTERS pc;
111 std::memset(&pc, 0, sizeof(PROCESS_MEMORY_COUNTERS));
112 pc.cb = sizeof(pc);
113 if (GetProcessMemoryInfo(GetCurrentProcess(), &pc, sizeof(pc)))
114 {
115 minfo.WorkingSetSize = pc.WorkingSetSize;
116 minfo.PeakWorkingSetSize = pc.PeakWorkingSetSize;
117
118 minfo.PagefileUsage = pc.PagefileUsage;
119 minfo.PeakPagefileUsage = pc.PeakPagefileUsage;
120 }
121
122#ifdef USE_MIMALLOC
123 Log("####################[+MIMALLOC+]####################");
124 mi_stats_print_out(
125 [](const char* msg, void*) {
126 std::string str{msg};
127 xr_string_utils::rtrim(str);
128 Log(str);
129 },
130 nullptr);
131 Log("####################[-MIMALLOC-]####################");
132#endif
133}
134
135size_t mem_usage_impl(u32* pBlocksUsed, u32* pBlocksFree)
136{

Callers 2

ExecuteMethod · 0.85
_initializeMethod · 0.85

Calls 2

LogFunction · 0.85
rtrimFunction · 0.85

Tested by

no test coverage detected