Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 JetBrains dotMemory 调试 .NET Web 应用程序中内存使用率高的问题。Profiler 声称第 2 代的内存使用率非常高。但是,当我单击“获取快照”时,内存使用量会立即清除,并且我无法在快照中看到第 2 代的内容。
如何调试第 2 代内存?
要获取内存快照,dotMemory 会启动垃圾收集,这就是 Microsoft Profiling API 的工作方式。Gen2 对象已被 GC 收集,这意味着它们上没有引用,它们只是等待 GC(2),而这发生的频率比 GC(0) 少。这意味着您没有高内存使用的问题。什么时候运行 GC 来释放内存是 CLR 的事情,如果没有,那么就有足够的内存。
如果您仍然需要查看它们是什么对象,您可以使用内存流量视图查看在两个快照之间的范围内分配和收集的对象。或快照比较视图,以查看一个快照中呈现的哪些对象在获取另一个快照时死亡。