示例#1
0
        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);
            }
        }