小编Mar*_*o F的帖子

使用 NLog 或 Serilog 时 .NET Core 3.0 应用程序中的内存泄漏

我在使用记录器时遇到了 .NET Core 3.0 的奇怪问题。

该应用程序在 Windows 上运行正常,但是当我在 Linux (Debian 10) 上将它作为守护程序启动时,它只会占用越来越多的内存。这个问题第一次是我用NLog的时候出现的,后来我换了Serilog,问题依旧。当我删除 NLog/Serilog 时,问题不存在。

使用内存快照和 Jetbrains dotMemory,我得到的只是一堆由 NLog/Serilog 创建(可能)的 sbyte 数组。

当我禁用记录到文件并只保留控制台记录时 - 问题消失了!

我尝试向垃圾收集器添加手动调用,但这没有帮助。

我们设法通过在 .service 文件中添加 MemoryMax 参数来创建解决方法。似乎垃圾收集器在接近最大限制时开始清理。(即限制为 150 MB,现在应用程序保持在 145 MB)。

有谁知道可能有什么问题?或者我应该与 NLog 和 Serilog 开发人员一起解决这个问题。

c# .net-core .net-core-3.0

6
推荐指数
1
解决办法
2577
查看次数

标签 统计

.net-core ×1

.net-core-3.0 ×1

c# ×1