Using Castle Windsor, I have a component configured with the transient lifestyle:
var service = container.Resolve<IMyService>(componentId);
// service usage ....
// service goes out of scope ...
By default, the container holds a reference to your objects (even the transient ones).
However, as @Bittercoder notes in Why does Castle Windsor hold onto transient objects?, you can change the release tracking policy. It seems that choosing
var policy = container.Kernel.ReleasePolicy; container.Kernel.ReleasePolicy = LifecycledComponentsReleasePolicy;
But since the question was asked, that appears to have become the default policy.