DrL*_*zer 8 .net c# memory-leaks
我写的应用程序因内存泄漏而遭受巨大痛苦.当用户关闭加载的项目时,几乎整个对象模型都停留在内存中.我知道这一点的方式是因为关闭我的应用程序中的项目几乎不影响任务管理器中的内存使用情况,然后打开一个新项目几乎使每次都加倍.我下载了jetBrain的dotTrace Memory 3.5,但很少(无)使用说明.我想知道如何使用它,它表明当我关闭项目后拍摄快照时,整个对象模型仍然在内存中.在我的项目中捕捉关闭代码我没有理由这样做.有没有人知道任何特别是通常会导致C#内存泄漏或任何用于追踪问题的工具或技术.一切都很好,有一个显示我的整个对象模型的应用程序仍然加载到内存但它没有显示我存储它的对象或变量.提前致谢.
首先,调查泄漏是否可能是由于事件处理程序的注册造成的,因为这是意外根除对象的最简单方法之一。例如,如果您有一个类“Bob”,它将其方法“OnSomeEvent”之一添加为由系统的长期存在的组件(例如“UserSettingsManager”)引发的事件的委托,则“Bob”类的对象' 不会被收集,因为它们由于是事件处理程序而保持活动状态(即事件回调不是弱引用)。
作为商业工具的替代方案,Windows 调试器有一个名为 SoS(Son of Strike)的扩展,您可以使用它来调试托管应用程序。然而,它并不是胆小的人,因为它是一个低级的命令行工具,需要大量的预先学习。然而,它非常强大,并且不会像商业工具那样在较大的进程(就堆消耗而言)上遇到很大的困难。
就商业分析器而言,我在 Redgate 的 ANTS Memory Profiler 方面获得了良好的体验(但我有一些同事讨厌它),因此可能值得尝试。
| 归档时间: |
|
| 查看次数: |
1709 次 |
| 最近记录: |