首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >dotnet 6消耗过多的“非托管内存”

dotnet 6消耗过多的“非托管内存”
EN

Stack Overflow用户
提问于 2022-11-01 14:02:53
回答 1查看 68关注 0票数 1

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

在端口期间没有重大代码更改。

dotnet 5的截图

dotnet 6的截图

非托管内存的峰值可以达到6 GB,如果进程仍然处于空闲状态(在EventStore中没有消息),它会释放一些非托管内存,并在3-4 GB左右设置。

其他细节

  • 操作系统: Linux (Ubuntu 22.04,Debian 10.11)
  • dotnet 6版本: 6.0.401
  • dotnet 5版本: 5.0.408

使用dotnet-dump和来自JetBrains的dotMemeory。(dotMemory没有提供任何关于“非托管内存”的见解)。目前正在研究WinDbg和dotnet-转储命令。

我要找的是

  1. 如何探测非托管内存和精确定位问题?
  2. 用于WinDbg/dotnet转储以分析“非托管内存”的任何有用命令
  3. dotnet 6需要如此多的非托管内存的可能原因,而dotnet 5可以使用相对较低的占用空间。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-09 14:00:08

问题在于Marten,更新后的版本(v3 -> v5)正在运行时创建类型,从而导致非托管内存激增。Marten团队解释了这里的行为。这个问题是按照Marten团队的指示解决的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74277127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档