【发布时间】:2012-08-01 13:05:23
【问题描述】:
很长一段时间以来,我一直在尝试修复我的应用程序中的内存泄漏。几个月前,我注意到在我的应用程序中,超过 95% 的对象被提升到 Gen2;我有一些非常基本的问题,我无法在书中找到。我希望你们能帮助我:
- 拥有这么多 Gen2 对象是个坏消息吗?在我拍摄的每个快照中,我都会在 WinDbg 中获得大约 77,000 个 Gen2 对象、100 个 Gen1 对象和 10 个 Gen0 对象。
- 我怎样才能找出这么多对象得到提升的原因?有什么好的工具吗?我一直在使用 WinDbg/SOS,但运气不佳
提前谢谢你。
【问题讨论】:
-
就个人而言,过去使用ANTS Memory Profiler 帮助了我很多。这是一款商业工具,可免费试用 14 天。
-
为什么你认为你有内存泄漏?
-
你的申请是什么?对象最终出现在 Gen2 中,因为当 Gen1 集合发生时,您的代码中仍然存在对它们的引用;如果没有一些代码,我们无法诊断出这种情况。
-
@DanPuzey 我不能把代码放在这里;一个有版权限制,而且代码太大
-
好吧,我们需要一些级别的额外细节来弄清楚发生了什么。 77k 个对象是什么?