从 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 分钟,然后停止工作