[英]Web application use too much memory
在我的托管公司中,我有2个或多或少相同的.net应用程序。 这两个应用程序使用相同的池,最大内存为300 mb。
我可以将其中一个应用程序的起始页面刷新大约10次,然后出现内存不足异常,并且池崩溃了。
在我的应用程序中,我打印出此内存值:
我已经阅读并阅读了有关内存配置文件的视频,但是当我对应用程序进行配置文件时我找不到任何问题。 我使用ANTS内存探查器8,并在构建后刷新一次起始页时得到以下结果:
当我查看摘要时,.NET使用为应用程序分配的135.8 MB总专用字节中的41.65 MB。 每次刷新时,此值变得越来越大。 那是正常的吗? 当我刷新8次后,我得到了:.NET使用为应用程序分配的153 MB总专用字节中的56.11 MB。
我应该从哪里开始? 使用这么多内存可能是什么问题? 内存不足300 mb吗?
毫无疑问,这是由于代码中的内存泄漏引起的,很可能是以不布置/关闭与队列或数据库之类的连接的形式。 除了分析外,请检查您的代码并确保要关闭/处置所有适当的资源:然后,您的问题应会缓解。
有一些未处理的数据库连接。 然后我有一个删除Etags的类,如下所示:
public class CustomHeaderModule : IHttpModule
{
public void Dispose() { }
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += OnPreSendRequestHeaders;
}
void OnPreSendRequestHeaders(object sender, EventArgs e)
{
HttpContext.Current.Response.Headers.Remove("ETag");
}
}'
我必须删除在Init函数中添加的新事件吗? 还是GC可以解决这个问题?
我有很多这样的:
Task.Factory.StartNew(() =>
{
Add(...);
});
但是我没有在我的代码中处理它们。 GC是否可以解决该问题,或者我应该以其他方式解决?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.