ASP.NET中的内存问题

ASP.NET中的内存问题,asp.net,memory-leaks,memory-management,Asp.net,Memory Leaks,Memory Management,我的asp.net应用程序内存有问题。问题是,在本地(100-200mb之间)运行时,我看不到任何问题,但在生产系统上,由于达到内存限制(512mb)(在共享主机上运行),我收到503个错误 我怎样才能确定这个问题?我不认为我可以访问当前的内存使用情况,至少我没有找到任何方法,而我的网站的托管公司说没有办法 我绝对没有跟踪内存泄漏的经验。:) 谢谢使用RedGate内存分析器的试用版 或者JetBrains dotTrace 这两种工具都非常简单易用,在识别保护性内存泄漏等方面做得非常好 最

我的asp.net应用程序内存有问题。问题是,在本地(100-200mb之间)运行时,我看不到任何问题,但在生产系统上,由于达到内存限制(512mb)(在共享主机上运行),我收到503个错误

我怎样才能确定这个问题?我不认为我可以访问当前的内存使用情况,至少我没有找到任何方法,而我的网站的托管公司说没有办法

我绝对没有跟踪内存泄漏的经验。:)


谢谢使用RedGate内存分析器的试用版

或者JetBrains dotTrace

这两种工具都非常简单易用,在识别保护性内存泄漏等方面做得非常好

最常见的泄漏源是丢失的dispose调用,或事件处理程序管理不善。。。根据代码库的大小,您可能能够“发现”问题点,但我发现使用工具可以大大加快过程,因为两者都将在对象图的快照之前/之后显示,因此您可以看到GC正在清理和未清理的内容

良好的内存管理概述:

使用RedGate内存分析器的试用版

或者JetBrains dotTrace

这两种工具都非常简单易用,在识别保护性内存泄漏等方面做得非常好

最常见的泄漏源是丢失的dispose调用,或事件处理程序管理不善。。。根据代码库的大小,您可能能够“发现”问题点,但我发现使用工具可以大大加快过程,因为两者都将在对象图的快照之前/之后显示,因此您可以看到GC正在清理和未清理的内容

良好的内存管理概述:

我不知道这是完全可以回答的,但这是你的一个开始。。。其他答案是解决特定的内存问题,但首先,您需要了解计算机、.NET运行时以及程序如何分配和释放内存(保留、使用和释放)

然后,您需要充分理解您的代码,以了解哪些函数是基于每个用户的,并查看使用了多少内存。从那里,您可以进入您的代码并跟踪问题,但您需要对基础知识有一个坚定的理解

如果我是你,我会从这篇文章开始,计划花更多的时间研究和学习。当然,这篇文章不仅会回答问题,而且会给你足够的知识来提出更具体/更好的问题。这是一篇好文章,我相信它真的会对你有所帮助,但它并不是全部。还有很多东西要学


这篇文章有点旧,我假设您正在使用更新的工具,所以当您消化完这篇文章后,请跳到Visual Studio Profiler来学习。

我不知道这是完全可以回答的,但这里是一个开始。。。其他答案是解决特定的内存问题,但首先,您需要了解计算机、.NET运行时以及程序如何分配和释放内存(保留、使用和释放)

然后,您需要充分理解您的代码,以了解哪些函数是基于每个用户的,并查看使用了多少内存。从那里,您可以进入您的代码并跟踪问题,但您需要对基础知识有一个坚定的理解

如果我是你,我会从这篇文章开始,计划花更多的时间研究和学习。当然,这篇文章不仅会回答问题,而且会给你足够的知识来提出更具体/更好的问题。这是一篇好文章,我相信它真的会对你有所帮助,但它并不是全部。还有很多东西要学


这篇文章有点旧,我假设您正在使用更新的工具,所以当您消化完这篇文章后,请跳到Visual Studio Profiler来学习。

第一件事第一。。。503不仅仅是因为内存。如果您的应用程序在5分钟内崩溃5次,由于快速失败,应用程序池将关闭,您将收到503-服务不可用错误

500 MB的奇数内存对我来说似乎非常少,因此,内存可能会增加您的问题。如果是503错误,则意味着您已经从崩溃的角度对问题进行了故障排除


如果您有内存问题,通常会出现内存不足异常,在这种情况下,您应该对进程(w3wp.exe)进行多个内存转储并对其进行分析。有很多关于如何分析内存泄漏的内存转储的文章。现在,将其称为内存泄漏还为时过早。

首先要做的事情是。。。503不仅仅是因为内存。如果您的应用程序在5分钟内崩溃5次,由于快速失败,应用程序池将关闭,您将收到503-服务不可用错误

500 MB的奇数内存对我来说似乎非常少,因此,内存可能会增加您的问题。如果是503错误,则意味着您已经从崩溃的角度对问题进行了故障排除


如果您有内存问题,通常会出现内存不足异常,在这种情况下,您应该对进程(w3wp.exe)进行多个内存转储并对其进行分析。有很多关于如何分析内存泄漏的内存转储的文章。现在,将其称为内存泄漏还为时过早。

这本身并不一定是问题的答案,但更多的是关于如何追踪此类事件的建议

我发现有一件事有助于跟踪此类问题,那就是在应用程序中构建某种工具。它可以一开始就简单到提供一个缓存来跟踪页面请求持续时间。这可以通过创建