CastleWindsor2.1.0.6655を使用しています。
解決されたオブジェクトに一時的なライフサイクルを使用したいのですが、このバージョンのCastleが依存関係のある一時的なものをどのように処理するかを確認したいと思います。イミディエイトウィンドウ(ビジュアルスタジオ)を使用すると、解決されたオブジェクトが解放されているかどうかを常に確認しながら、解決、破棄、そして最終的に実現の効果を確認できます。
例えば。
resolved = container.Resolve(Id);
container.Kernal.ReleasePolicy.HasTrack(resolved)
= true
resolved.Dispose()
container.Kernal.ReleasePolicy.HasTrack(resolved)
= true
container.release(resolved)
container.Kernal.ReleasePolicy.HasTrack(resolved)
= false
私の懸念は、これらのオブジェクトは解放されないため、リクエスト間で追跡され続けていることです。つまり、メモリ使用量が増え続けています。
Component Burdenがこの問題に関連していることを読みましたが、Castle2.0以降でこれが何であるかを正確に知ることができませんでした。
「リリース」の難しさは、解決されたオブジェクトが実際にはサービスの一部であり、それらの使用法がORM関数とマッピングを提供することであるということです。これらの場合、リリースするコンテナを参照することが正しいかどうかはわかりません。
メモリプロファイラーを使用せずに、コンテナーが特定のポイントで参照しているオブジェクトの数を確認する方法があるかどうか疑問に思っています。これは利用できないためです。
私は多分以下を使うことができると思いました:
container.Kernel.GetHandlers()
私が探しているタイプで、追跡された発生が増加しているかどうかを確認するには?