diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index cec19f2f9326e1a5af3a239d5f464380d7244660..d9e64919a94c48592941634166f3fc360ae89c04 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -726,12 +726,12 @@ U32Kilobytes LLMemoryInfo::getPhysicalMemoryKB() const
 void LLMemoryInfo::getAvailableMemoryKB(U32Kilobytes& avail_physical_mem_kb, U32Kilobytes& avail_virtual_mem_kb)
 {
 #if LL_WINDOWS
-	// Sigh, this shouldn't be a static method, then we wouldn't have to
-	// reload this data separately from refresh()
-	LLSD statsMap(loadStatsMap());
+	MEMORYSTATUSEX state;
+	state.dwLength = sizeof(state);
+	GlobalMemoryStatusEx(&state);
 
-	avail_physical_mem_kb = (U32Kilobytes)statsMap["Avail Physical KB"].asInteger();
-	avail_virtual_mem_kb  = (U32Kilobytes)statsMap["Avail Virtual KB"].asInteger();
+	avail_physical_mem_kb = U64Bytes(state.ullAvailPhys);
+	avail_virtual_mem_kb  = U64Bytes(state.ullAvailVirtual);
 
 #elif LL_DARWIN
 	// mStatsMap is derived from vm_stat, look for (e.g.) "kb free":
@@ -882,14 +882,14 @@ LLSD LLMemoryInfo::loadStatsMap()
 	GlobalMemoryStatusEx(&state);
 
 	DWORDLONG div = 1024;
-
-	stats.add("Percent Memory use", state.dwMemoryLoad/div);
-	stats.add("Total Physical KB",  state.ullTotalPhys/div);
-	stats.add("Avail Physical KB",  state.ullAvailPhys/div);
-	stats.add("Total page KB",      state.ullTotalPageFile/div);
-	stats.add("Avail page KB",      state.ullAvailPageFile/div);
-	stats.add("Total Virtual KB",   state.ullTotalVirtual/div);
-	stats.add("Avail Virtual KB",   state.ullAvailVirtual/div);
+	DWORDLONG div_mb = 1024 * 1024;
+	stats.add("Percent Memory use", state.dwMemoryLoad);
+	stats.add("Total Physical MB",  state.ullTotalPhys/div_mb);
+	stats.add("Avail Physical MB",  state.ullAvailPhys/div_mb);
+	stats.add("Total page MB",      state.ullTotalPageFile/div_mb);
+	stats.add("Avail page MB",      state.ullAvailPageFile/div_mb);
+	stats.add("Total Virtual MB",   state.ullTotalVirtual/div_mb);
+	stats.add("Avail Virtual MB",   state.ullAvailVirtual/div_mb);
 
 	// SL-12122 - Call to GetPerformanceInfo() was removed here. Took
 	// on order of 10 ms, causing unacceptable frame time spike every