如何在专门运行Ubuntu和.NET Core的计算机上找到可用的总物理内存?大多数解决方案仅适用于完整的.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。
答案 0 :(得分:1)
当前您无法获得所有平台上的硬件信息,在本期杂志中也提到了这一点: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和许多其他信息。
但是这种方法需要一些文件解析。