在asp.net中查找泄漏内存的页面

在asp.net中查找泄漏内存的页面,asp.net,sql,memory-leaks,Asp.net,Sql,Memory Leaks,我正在使用redgate内存探查器查找内存泄漏。但是这个软件只显示系统类。我想找到产生问题的页面,请帮助分析ASP.NET网站时,您将看到许多系统类,因为IIS在幕后做了很多工作,但ANTS Memory Profiler肯定不仅仅限于显示系统类 您拥有源代码的类在类列表中以粗体突出显示,并且您还可以使用筛选仅显示您拥有源代码的类。如果您没有源代码,但仍然希望突出显示特定名称空间中的类(例如,在您的情况下,系统中没有的任何类),则可以通过选择按名称空间分组来实现 ANTS向您展示了在拍摄内存快

我正在使用redgate内存探查器查找内存泄漏。但是这个软件只显示系统类。我想找到产生问题的页面,请帮助分析ASP.NET网站时,您将看到许多系统类,因为IIS在幕后做了很多工作,但ANTS Memory Profiler肯定不仅仅限于显示系统类

您拥有源代码的类在类列表中以粗体突出显示,并且您还可以使用筛选仅显示您拥有源代码的类。如果您没有源代码,但仍然希望突出显示特定名称空间中的类(例如,在您的情况下,系统中没有的任何类),则可以通过选择按名称空间分组来实现

ANTS向您展示了在拍摄内存快照时保存在内存中的对象。如果类列表显示内存中不存在任何类,那是因为它们当时不存在

您没有提供任何信息,因此很难在您的具体案例中提供更多指导,但一般来说:

  • 您确实存在内存问题吗?使用ANTS时间线上的性能计数器查看您使用应用程序时的内存使用情况。如果它没有上升,也许你没有问题

  • 确保在正确的时间拍摄快照。这是最难做到的事情之一。首先,你需要确保一个网站已经被适当地“预热”。如果您查看站点上第一个页面点击的行为,您将不会看到正常的应用程序行为,因为设置连接的一次性开销、未使用缓存等。一旦站点预热,请拍摄一个基线快照。接下来,以您认为可能会导致问题的方式使用应用程序,然后拍摄另一个快照。ANTS比较了两个快照之间的内存使用情况,特别是显示了哪些类在快照之间使用了更多内存。然后重复您的操作(以相同的方式使用您的站点,然后再拍摄另一张快照),并寻找类似的增长

  • 找出增加的原因。一旦确定了某个问题,请使用实例保留图了解导致该对象保留在内存中的引用链


诊断ASP.NET内存泄漏的一个常见问题是,仅泄漏极少量内存,但经常泄漏,例如在每次加载页面时。在开发环境中,站点可能看起来很好,但在生产环境中负载不足时会失败。一种有用的启动方法是使用负载生成工具(您可以从IIS6附带的免费tinyget工具开始,或者使用更复杂的负载测试(如果有),并分析这些条件下应用程序的性能。在生产环境中进行评测是一项危险的措施,只能作为绝对的最后手段。基于GC的应用程序中的内存泄漏非常棘手。你真的经历过吗?我建议发布类本身并问一个问题:“内存泄漏在哪里?”内存分析器只显示系统类名,如system.string、system.byte。但我想知道哪个类或aspx.cs页面划分问题。现在这似乎是一个糟糕的分析器。你用的对吗?我用的是redgate内存分析器。你能告诉我用哪种分析器我可以这样做吗?(没人能帮我吗?)?