【问题标题】:How do i profile memory held in .NET? [duplicate]我如何分析 .NET 中保存的内存? [复制]
【发布时间】:2011-12-03 15:11:51
【问题描述】:

我有一个应用程序。当我运行它几个小时时,我注意到它开始变大。它在第一个小时后变得比 t 大 4 倍。由于它在内存空间有限的服务器上运行,我不能拥有它。我尝试在 .NET 中进行内存采样,但它告诉我的是我的 json 序列化分配了最多的内存。那是在一个循环中,所以我知道它每次迭代都消失了。

我如何找到持有我记忆的对象?强制 GC 收集没有帮助。所以似乎有什么东西在保留记忆。

【问题讨论】:

  • 它可能会越来越大,但它是虚拟内存,问题是它是否需要那个内存。如果系统需要内存用于其他进程,它将放弃一些内存。那么问题就变成了,您的应用程序是否需要足够的内存来开始分页?

标签: .net memory profiling


【解决方案1】:

您可以使用内存分析器。来自 RedGate 的 ANTS Profiler 和来自 JetBrains 的 dotTrace 非常受欢迎。 Microsoft 还提供了一个免费的CLR Profiler,其中有CLR 2.0CLR 4.0 的不同版本。

【讨论】:

  • 配置文件没有帮助我找到这个,但泄漏的问题是没有对需要它的对象调用 dispose。我以为 GC 最终会调用它,但我错了
猜你喜欢
  • 2010-09-11
  • 1970-01-01
  • 2011-05-18
  • 2010-11-06
  • 2011-10-25
  • 1970-01-01
  • 2018-02-27
  • 2014-09-11
  • 1970-01-01
相关资源
最近更新 更多