gpt4 book ai didi

c# - .net 应用程序的非托管堆大小

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:32 27 4
gpt4 key购买 nike

我目前正在尝试对我正在处理的 C# 项目进行内存分析,以确定是否存在任何泄漏,因为此应用程序需要尽可能接近 100% 的正常运行时间。我开始使用 Ants Memory Profiler 7.4 版,并注意到我的非托管内存随着时间的推移不断增长,尽管我的托管内存没有。

经过更多试验后,我尝试对一个程序进行类似的分析,该程序除了阻塞 Console.ReadLine() 指令外什么都不做。我运行了分析并注意到发生了同样的事情。我的非托管堆正在缓慢增长。事实上,它实际上似乎只在垃圾收集器被调用时增长(通过快照功能)。现在,为什么反复调用垃圾收集会导致非托管内存无休止地增加?与 ANTS 有关吗?

我想使用一些其他工具,最好是 windbg 或 SOS 之类的工具来确定它看到我的非托管内存使用情况。现在了解其中的内容对我来说并不重要——尽管从长远来看这可能有助于调试。我只是想确定当前正在运行的应用程序的非托管内存使用情况。我想看看这是否真的是 Ant 的问题,还是我对环境运作方式的误解。拥有某种 .net、visual studio 或 Windows 工具来为我提供有关我的过程的准确信息将有助于我实现这一点。

最佳答案

AQTime来自 SmartBear 的软件在为您提供托管和非托管代码的内存分析方面做得非常好。我的很多工作都在托管和非托管边界,我已经多次使用它来查找内存泄漏。

如果您正在处理大块非托管内存,请务必调用 GC.AddMemoryPressureGC.RemoveMemoryPressure 来帮助 GC。

关于c# - .net 应用程序的非托管堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814060/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com