Why does Windows 10 ver.1909 GlobalMemoryStatusEx report smaller ullAvailVirtual by 4 GB?

caffemocha 1 Reputation point
2021-04-13T06:03:44.767+00:00

Hello,
I noticed Windows 10 GlobalMemoryStatusEx function started reporting a smaller ullAvailVirtual value for the same x64 program.

  1. On Windows 10 ver. 1607 (10.0.14393), ullAvailVirtual = 140,737,471,442,944 bytes
  2. On Windows 10 ver. 1909 (10.0.18363), ullAvailVirtual = 140,733,079,748,608 bytes

Comparing them, the latter reports a smaller ullAvailVirtual by 4,391,694,336 bytes (~4 GB).
On the other hand, the both versions report the same ullTotalVirtual = 140,737,488,224,256 bytes

Since Virtual Bytes are calculated as ullTotalVirtual - ullAvailVirtual, memory tools such as 'perfmon.exe' started reporting a larger Virtual Bytes by ~4 GB.
Also, .NET method: System.Diagnostics.Process.GetCurrentProcess().VirtualMemorySize64 started reporting a larger Virtual Bytes.
'VMMap.exe' reports it as 'Private Data - Thread Environment Block'.

My questions are:

  1. What is the purpose of lowering 'ullAvailVirtual' on Windows 1909?
  2. Is this caused by a system setting or configuration?
  3. If it is, which system setting or configuration affects it?

Replication steps:
Build (x64) and run the program below on Windows 10 ver. 1607 and 1909 systems to see the difference.

Replication code (C++):

    #include <iostream>
    #include <string>
    #include <Windows.h>

int main()
{
 MEMORYSTATUSEX memStatusEx;
 memStatusEx.dwLength = sizeof(memStatusEx);
 BOOL succeeds = GlobalMemoryStatusEx(&memStatusEx);
 if (succeeds)
 {
 DWORDLONG totalVirtual = memStatusEx.ullTotalVirtual;
 DWORDLONG availVirtual = memStatusEx.ullAvailVirtual;
 std::cout << "totalVirtual=" << totalVirtual << "\n";
 std::cout << "availVirtual=" << availVirtual << "\n";

 DWORDLONG virtualBytes = totalVirtual - availVirtual;
 std::cout << "virtualBytes=" << virtualBytes << "\n";
 }

 std::cout << "Press enter to close\n";
 std::cin.ignore();
}
Windows for business | Windows Client for IT Pros | User experience | Other
{count} votes

2 answers

Sort by: Most helpful
  1. JiayaoZhu 3,926 Reputation points
    2021-04-14T08:25:07.197+00:00

    Hi,

    Thank you for your posting!

    1) The regular (monthly) updates save installation etc files which over time occupy a large drive space. So, the change in 'ullAvailVirtual' on Windows 1909 is caused by version upgrading.

    2) The feature upgrades (like 1809 to 2004) save a complete copy of the previous installation to allow roll back. The system usually deletes this after a few days. Look for the folder windows.old.

    3) Most of this can be recovered using the various drive cleanup options.

    Here is the blog who has the similar issue with yours, and in this blog, certain solutions to monitor and cleanup this extra data are also covered:

    https://learn.microsoft.com/en-us/answers/questions/62169/more-disk-space-used-by-windows-10-with-upgradatio.html

    Thank you for your support!

    Best regards
    Joan


    If the Answer is helpful, please click "Accept Answer" and upvote it.

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


  2. JiayaoZhu 3,926 Reputation points
    2021-05-10T05:19:38.633+00:00

    Hi,

    Thanks for your reply!

    Based on your descriptions, your issue should be related to version 1909 and if your performance is not affected by the change, just ignore it. We can only try our best to troubleshoot issues which are related to configuration. If your production runs properly, we can hardly give any more suggestions within our Q&A scope. So, if you are really worried about your issue, you are suggested to contact Microsoft Customer Support and Services where more in-depth investigation can be done so that you would get a more satisfying explanation and solution to this issue. In addition, if the issue has been proved as design matter, the consulting fee would be refund. You may find phone number for your region accordingly from the link below.

    Global Customer Service phone numbers:

    https://support.microsoft.com/en-us/help/13948/global-customer-service-phone-numbers

    Thanks for your support and understanding! And don't forget to help Accept Answer!

    BR,
    Joan

    --------------------------------------------------------------------------------------------------------------------

    If the Answer is helpful, please click "Accept Answer" and upvote it.

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.