ASP.Net MVC 3アプリケーションでメモリリークが発生しており、IoCコンテナの問題である可能性があります。MVCApplication内のIoCコンテナへの静的な参照によってメモリリークが発生しますか?
MvcApplicationは、WindsorContainerオブジェクトを作成し、それを移入して、このような静的フィールドに格納します。
public class MvcApplication : System.Web.HttpApplication, IContainerAccessor
{
private static WindsorContainer container;
protected void Application_Start()
{
ControllerBuilder.Current.SetControllerFactory(
new WindsorControllerFactory(container));
}
}
は、それが静的フィールドでコンテナを保持するために、ここで正しいですか?私が理解する限り、コンテナ自体は、MVCApplication自体の長さだけ存続する必要があります。静的にすると複数のMVCApplicationインスタンス間で単純に共有されるため、正しく配置されていないのだろうかと思います。
... MvcApplicationが処分する際、コンテナ自体を処分するウィンザーわからない場合がありますが、私はUnityとNinjectの両方を使用して、その子コンテナを見つけましたリクエストごとに最適です。なぜアプリケーションの寿命の間、このコンテナを保持していますか? – Yuck