我有以下代码(正确地)为我提供了计算机上已安装的总内存(请注意,不是总的物理内存,它会比已安装的内存少一点):
using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetPhysicallyInstalledSystemMemory(out long TotalMemoryInKilobytes);
public float getInstalledRAM()
{
long memKb;
GetPhysicallyInstalledSystemMemory(out memKb);
return float.Parse((memKb / 1024 / 1024).ToString());
}
但是,当我在测试虚拟机上运行它时,它比应该提供的少了1GB(不知道数量是否重要,但最重要的是,它给了我错误的值)。有任何可能的原因吗?
答案 0 :(得分:2)
Windows通常会舍入总可用内存。在VM下看到的结果可能仅仅是由于整数运算将两个除法的结果截断了。
强制执行双重算术至少除以ServletContext
一次,看看错误是否仍然存在。