public void GarbageCollect() { var allContentUris = new HashSet <Uri>(); foreach (var snapshotId in _intRepository.ListKeys()) { var snapshotReference = GetSnapshotReference(snapshotId); allContentUris.UnionWith(snapshotReference.ContentUris); var snapshot = GetSnapshot( snapshotId, snapshotReference); allContentUris.UnionWith( snapshot.BlobReferences.SelectMany( blobReference => blobReference.ContentUris)); } var unusedContentUris = _uriRepository.ListKeys() .Except(allContentUris) .ToArray(); foreach (var contentUri in unusedContentUris) { _uriRepository.RemoveValue(contentUri); _probe.RemovedContent(contentUri); } }