In relation to my previous question, I need to check whether a component that will be instantiated by Castle Windsor, can be garbage collected after my code has finished using it. I have tried the suggestion in the answers from the previous question, but it does not seem to work as expected, at least for my code. So I would like to write a unit test that tests whether a specific object instance can be garbage collected after some of my code has run.
Is that possible to do in a reliable way ?
I currently have the following test based on Paul Stovell's answer, which succeeds:
public void ReleaseTest()
WindsorContainer container = new WindsorContainer();
container.Kernel.ReleasePolicy = new NoTrackingReleasePolicy();
var weakRef = new WeakReference(container.Resolve<ReleaseTester>());
Assert.AreEqual(0, ReleaseTester.refCount, "Component not released");
private class ReleaseTester
public static int refCount = 0;
Am I right assuming that, based on the test above, I can conclude that Windsor will not leak memory when using the NoTrackingReleasePolicy ?
See Question&Answers more detail:os