【发布时间】:2020-10-19 06:24:18
【问题描述】:
我已准备好为此付费!
我的 ASP.Net Core 3.1 应用程序从大约 450MB 开始,逐渐运行到大约 4.5GB(我怀疑如果有更多可用内存它会增长得更多)。
我已经在各个阶段进行了内存转储,并使用 dotMemory 分析它们似乎表明 JsonSerialiserOptions 是主要嫌疑人:
钻取到JsonSerializerOptions 显示了 3 个实例。两个的数字可以忽略不计,如果我进一步深入研究内存使用率最高的三个中的一个,它的 Key Retention Path 显示如下:
这就是我需要帮助的地方。我真的不知道如何处理这些保留路径。我期待如果问题出在我的代码中,我应该在保留路径的底部找到我的应用程序的某个类?我需要帮助,试图从这些保留路径中找出问题所在。
【问题讨论】:
-
建议:熟悉 MSVS Memory Usage 诊断工具
-
得承认我有点困惑,因为 dotMemory 是一个商业产品,有大量的支持信息、文档、YouTube 视频、howtos 和支持它的公司支持团队,为什么你需要以这种方式(或根本)问这个问题。您是否与 jetbrains 有任何未公开的从属关系?如果你愿意付钱给任何人,也许从 jb 购买完整的产品并让他们指导如何使用它会是最有效的
-
不是 dotMemory 产品支持问题。这是一个关于理解保留路径告诉我的一般问题。我已经查看了 dotMemory 在线文档和示例。基于此,我在我的问题中添加了以下声明:如果问题出在我的代码中,我希望在保留路径中看到我自己的项目类之一。但我所看到的只是核心库类。我是否相信问题出在 .Net Core DI 系统中?
-
启用在 dotMemory 中收集分配信息并查看创建了哪些 JsonSerializerOptions 堆栈跟踪实例。它会提示您应该释放或处置哪些对象,以避免将它们保留在内存中。
标签: c# asp.net-core memory-management memory-leaks dotmemory