首页 > 解决方案 > 查找计算机上的总物理内存、.NET core 2.1、c#、Ubuntu

问题描述

如何在专门运行 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);

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

标签: c#linux.net-core

解决方案


目前您无法获取所有平台上的硬件信息,本期也提到了这一点: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 和许多其他信息。

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


推荐阅读