我的应用程序为 TotalVirtualMemory 返回了一个非常大的数字。我实例化一个 ComputerInfo() 对象并调用 TotalVirtualMemory,返回的值是 ~130TB。创建一个基本项目来测试它似乎返回了正确的值:~4GB。是什么原因造成的?我的代码如下:
using System;
using Microsoft.VisualBasic.Devices;
namespace ConsoleApp1
{
public class Program
{
private static void Main(string[] args)
{
var test = new Program();
Console.WriteLine($"Total Virtual Memory: {test.GetTotalVirtualMemory()}");
Console.WriteLine($"Total Virtual Memory Readable: {test.GetTotalVirtualMemory() * (1.0 / 1024.0 / 1024.0 / 1024.0)}");
}
public ulong GetTotalVirtualMemory()
{
return new ComputerInfo().TotalVirtualMemory;
}
}
}
最佳答案
4GB 仅适用于 32 位进程,您得到的数字是 64 位进程的预期数量
using System;
using Microsoft.VisualBasic.Devices;
namespace ConsoleApp1
{
public class Program
{
private static void Main(string[] args)
{
var test = new Program();
Console.WriteLine($"Is 64 Bit Process: {Environment.Is64BitProcess}");
Console.WriteLine($"Total Virtual Memory: {test.GetTotalVirtualMemory()}");
Console.WriteLine($"Total Virtual Memory Readable: {test.GetTotalVirtualMemory() * (1.0 / 1024.0 / 1024.0 / 1024.0)}");
}
public ulong GetTotalVirtualMemory()
{
return new ComputerInfo().TotalVirtualMemory;
}
}
}
在“项目属性 -> 构建选项卡”中更改“平台目标”,使其仅在 x86 上运行,而不是设置为 x64 或 AnyCPU,您将看到预期的 4GB 数字。
关于c# - 总虚拟内存为我的应用程序返回不切实际的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47699624/