从 Linux 机器上的 .Net Core 应用程序获取进程的内存使用情况

Posted

技术标签:

【中文标题】从 Linux 机器上的 .Net Core 应用程序获取进程的内存使用情况【英文标题】:Getting memory usage of process from .Net Core app on Linux machine 【发布时间】:2021-07-29 03:24:32 【问题描述】:

我正在尝试从 .netcore 应用程序获取当前进程的总内存使用量。

System.Diagnostics.Process.GetCurrentProcess().PagedMemorySize64 在 Windows 上运行良好,但在 Linux 机器上返回零。我也试过System.Diagnostics.PerformanceCounter package 来获取值,但它抛出平台不支持异常。

我使用 .netcore 3.1 作为框架。

【问题讨论】:

如果您有可能升级到 .NET 5.0,那么有一个新的GC.GetGCMemoryInfo() 方法可以获取有关当前内存使用情况的大量有趣数据。但遗憾的是,它实际上只是 .NET 5。 【参考方案1】:

通过关注getting CPU and memory usage of a docker container 的答案。我只是在/sys/fs/cgroup/memory/memory.usage_in_bytes 位置读取文件并将其解析为 int 变量。

【讨论】:

以上是关于从 Linux 机器上的 .Net Core 应用程序获取进程的内存使用情况的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 机器上为 Linux 编译 .NET Core 应用程序

是否可以设置 Visual Studio 2017,使其在远程 Linux 机器而不是本地机器上运行和调试 .NET Core C# 应用程序?

.NET Core 控制台应用程序无法识别 Linux 上的输入参数

asp.net core blazor:网络共享上的图像/文件工作 1 分钟,然后停止工作

从 IIS 上的 ASP.NET Core 应用程序请求超时

使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序