在计算机、.NET core 2.1、c#、Ubuntu 上查找总物理内存

lhs*_*lhs 5 c# linux .net-core

如何在专门运行 Ubuntu 和 .NET 核心的计算机上找到总可用物理内存?大多数解决方案仅适用于完整的 .NET 和以下 .NET 核心代码片段——

ManagementClass mc = new ManagementClass ("Win32_ComputerSystem");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject item in moc)
    m1 = Convert.ToUInt64(item.Properties["TotalPhysicalMemory"].Value);
Run Code Online (Sandbox Code Playgroud)

在 Windows 上正常工作,但在非 Windows 系统上返回 0。

小智 3

目前无法获取所有平台上的硬件信息,本期也提到了这一点: https: //github.com/dotnet/corefx/issues/22660

我认为从 .NET Core 2.1 开始,您可以使用 Process 类来获取进程内存,如本期所述: https: //github.com/dotnet/corefx/issues/26669


作为替代方案,在 Linux 上,您始终可以从 /proc 中的文件访问硬件和操作系统信息,对于内存,/proc/meminfo 您可以获取 MemTotal、MemFree 和许多其他信息。

然而,这种方法需要一些文件解析。