If a Windows VM is being discovered as a server (cmdb_ci_win_server) and, at the same time as a VMware Instance (cmdb_ci_vmware_instance) because vCenter discovery is enabled, the RAM values might not match.
If you log into the VM and vCenter, both show the same amount of RAM.
If RAM is added dynamically to a Windows VM through vCenter while it is running the Win32_PhysicalMemory class isn't updated. As the ServiceNow Windows probes use this class to recover the memory information it appears incorrectly in the cmdb_ci_win_server CI.
It appears correctly on the server because the Win32_OperatingSystem class is used to retrieve the information.
You can verify this by running the following command against the target server as per the documentation provided here: Manage ECC Queue content
powershell.exe 'Get-WmiObject -Class Win32_OperatingSystem -ComputerName <TARGET_SERVER_NAME_OR_IP> -Property FreePhysicalMemory'
NOTE: This is not a platform limitation, this is a consequence of how Windows WMI and dynamic memory assignment interact.
Reboot the VM, this will update Win32_PhysicalMemory.