在从dotnet 5移植到dotnet 6之后,后端应用程序正在消耗大量的“非托管内存”。它是一个复杂的F#应用程序,托管在Linux上,运行多个进程,大量序列化来自EventStore的消息,并使用AKKA.NET实现了参与者模型。
在端口期间没有重大代码更改。
dotnet 5的截图

dotnet 6的截图

非托管内存的峰值可以达到6 GB,如果进程仍然处于空闲状态(在EventStore中没有消息),它会释放一些非托管内存,并在3-4 GB左右设置。
其他细节
使用dotnet-dump和来自JetBrains的dotMemeory。(dotMemory没有提供任何关于“非托管内存”的见解)。目前正在研究WinDbg和dotnet-转储命令。
我要找的是
发布于 2022-11-09 14:00:08
问题在于Marten,更新后的版本(v3 -> v5)正在运行时创建类型,从而导致非托管内存激增。Marten团队解释了这里的行为。这个问题是按照Marten团队的指示解决的。
https://stackoverflow.com/questions/74277127
复制相似问题