ASP.NET网站内存使用率相当高
|
我有一个ASP.NET网站,将在约3-4天内使用约2gb的物理内存,对我来说听起来真的很糟糕。目前,我已配置IIS重新启动应用程序池进程,当它达到500mb。我想尝试跟踪问题。 当在.NET中创建一个对象的新实例时,我的印象是它不需要被释放,因为.NET垃圾收集器将为我做这个。 是这样的情况还是这可能是我遇到问题的原因之一? 解决方法.NET将非常有效地管理垃圾回收。在实现IDisposable的类型上,调用Dispose方法是明智的,这可能不是您的问题。内存泄漏可能发生在.NET中,原因很多。这里有几个:>您可以在Session中为每个用户缓存太多的数据。 我希望这给你一些关于在哪里看的想法。 更新:您应该观看this video关于ASP.NET调试。 更新2: 关于CLR,故事在这里结束。 CLR没有具体处理实现IDisposable接口的对象。然而,.NET垃圾收集器本质上是不确定的。这意味着你不知道什么时候运行,如果它运行。这意味着在您的本地资源被清理之前可能需要很长时间(因为一个终结者只能在收集之后调用)。然而,对于许多资源,有必要在完成它们之后立即释放它们。例如,当您不关闭它们时,或者当您通过System.Drawing命名空间处理.NET中的GDI时,您将很快用尽数据库连接。 为此,引入了IDisposable界面。再次,CLR和垃圾收集器不看这个接口。它是类型和其用户之间的契约,允许用户直接释放对象的底层资源。在正常设计中,对象的终结器和对象的Dispose方法将调用相同的私有或受保护的方法来释放这些资源。当一个类型实现IDisposable时,当你完成它时,调用它是Dispose方法,或者将对象包装在一个using语句中以允许释放本地资源是确定性的,这是明智的。 所以回来你的问题。所有管理对象将由GC收集,但本机资源不会。因此,类型可能会实现一个finalizer方法,而这些对象也通常会实现IDisposable接口。对它们的调用处理将明确地并且直接地释放这些本地资源。 我希望这是有道理的。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp-classic – 你用什么来编辑和开发经典ASP
- asp.net – 如何在visual studio中查看cshtml页面?
- 使用模块化设计组织良好的ASP.NET应用程序的最佳方法
- ASP.NET MVC 3 – 处理多个域并共享单个代码库
- asp.net-mvc-3 – 在查询字符串中使用“popup = 1”时找不到
- 序列化 – Newtonsoft中的TypeNameHandling需要$type作为第
- asp.net-mvc – ASP.NET MVC中的视图文件/目录结构应该是什
- ASP.NET Web应用程序(MVC)部署自动化和Subversion
- asp.net – 每个应用程序池的内存使用
- asp.net-mvc – ASP.NET MVC/C++#:可以使用Html.ActionLin
- asp.net-mvc-3 – 我可以在“区域”编辑器模板中
- asp.net-mvc – 访问ASP.NET MVC应用程序中的控制
- asp.net-mvc – SquishIt vs. MVC 4.0 Bundler
- asp.net – Facebox为输入添加逗号
- ASP.net ViewState – 即使在禁用时,也存在一些视
- asp.net – web.config中的元素和项目文件之间有
- asp.net – 使用ARR的IIS反向代理与目录级别有问
- 如何更改.Net页面将在其下运行的扩展名?
- IIS 7.0的ASP.NET进程是什么?
- asp.net – Jquery Ajax,不在Internet Explorer中
