.NetCore 应用程序内存泄漏 - 高开销|未使用的内存
Posted
技术标签:
【中文标题】.NetCore 应用程序内存泄漏 - 高开销|未使用的内存【英文标题】:.NetCore App Memory Leak - high Overhead|Unused memory 【发布时间】:2021-12-11 03:36:27 【问题描述】:使用 .Net Core 应用程序从源读取数据、对其进行转换、存储在内存队列中、对转换后的数据进行批处理并将其写入接收器。随着进程运行的时间更长,我们观察到 VM 的内存开始减少,直到完全结束,并且我开始收到“内存不足”异常。我们在程序中监控了内存队列,没有数据堆积在那里。我从“任务管理器”创建了程序的内存转储。
大部分内存似乎在开销|未使用。这是什么意思?我该如何解决这个问题?
【问题讨论】:
.NET Core 的哪个版本?你能用一个工具来显示代数和 LOH 的大小,包括碎片吗?我将从在 PerfView 中录制“仅 gc 收集”会话开始。 net5.0 是版本。 .etl 文件可以吗? 看起来很有趣,将挖掘它并返回一些细节! 【参考方案1】:当 gc 模式为服务器时,我也发生了类似的事情。在这种模式下,GC 会以更大的块收集内存,因此可能需要一段时间才能 GC 开始收集内存。在我的情况下,这个过程达到了大约 20GB。当我更改为工作站模式时,进程达到了大约 1GB 的内存
https://docs.microsoft.com/en-us/dotnet/core/run-time-config/garbage-collector#workstation-vs-server
【讨论】:
以上是关于.NetCore 应用程序内存泄漏 - 高开销|未使用的内存的主要内容,如果未能解决你的问题,请参考以下文章