public static void Scavenge() { foreach (Type serviceType in ServiceInstancePool.Keys) { lock (serviceType) { WeakReferenceCollection instanceReferenceList = ServiceInstancePool[serviceType]; for (int i = instanceReferenceList.Count - 1; i > -1; i--) { if (instanceReferenceList[i].Target == null) { instanceReferenceList.RemoveAt(i); } } } } }