【发布时间】:2012-04-28 20:20:49
【问题描述】:
我们将 OpenRasta 用于提供二进制资源(主要是图像和 PDF)的服务。其中一些相对较大(5-75MB)。我们遇到了性能问题,并且使用 ANTS 内存分析器确定似乎存在内存泄漏。
我们一直在为DI使用StructureMap,在blog post中发现如下修改:
public void HandleIncomingRequestProcessed()
{
HttpContextLifecycle.DisposeAndClearAll();
}
当我们进行进一步修改时,泄漏消失了:
public void HandleIncomingRequestProcessed()
{
HttpContextLifecycle.DisposeAndClearAll();
ObjectFactory.EjectAllInstancesOf<IRequest>();
ObjectFactory.EjectAllInstancesOf<IResponse>();
ObjectFactory.EjectAllInstancesOf<ICommunicationContext>();
}
编辑:这不是一个好主意,因为它会弄乱并发请求。请参阅 cmets 的答案。
基本上,我想知道,这会搞砸什么吗?还是值得提交的拉取请求?
以下是分析器的前后照片:
谢谢-
【问题讨论】:
-
类似但不完全相同的问题:stackoverflow.com/questions/28299352/…