private long[] _cacheSizeSamples;
private DateTime[] _cacheSizeSampleTimes;
private int _idx;
- private SRef _sizedRef;
+ private SRefMultiple _sizedRefMultiple;
private int _gen2Count;
private long _memoryLimit;
_gen2Count = GC.CollectionCount(2);
_cacheSizeSamples = new long[SAMPLE_COUNT];
_cacheSizeSampleTimes = new DateTime[SAMPLE_COUNT];
- InitMemoryCacheManager();
+ if (memoryCache.UseMemoryCacheManager)
+ InitMemoryCacheManager(); // This magic thing connects us to ObjectCacheHost magically. :/
InitDisposableMembers(cacheMemoryLimitMegabytes);
}
private void InitDisposableMembers(int cacheMemoryLimitMegabytes) {
bool dispose = true;
try {
- _sizedRef = new SRef(_memoryCache);
+ _sizedRefMultiple = new SRefMultiple(_memoryCache.AllSRefTargets);
SetLimit(cacheMemoryLimitMegabytes);
InitHistory();
dispose = false;
}
public void Dispose() {
- SRef sref = _sizedRef;
- if (sref != null && Interlocked.CompareExchange(ref _sizedRef, null, sref) == sref) {
+ SRefMultiple sref = _sizedRefMultiple;
+ if (sref != null && Interlocked.CompareExchange(ref _sizedRefMultiple, null, sref) == sref) {
sref.Dispose();
}
IMemoryCacheManager memoryCacheManager = s_memoryCacheManager;
// This update must happen, otherwise the CacheManager won't
// know the total cache size.
int gen2Count = GC.CollectionCount(2);
- SRef sref = _sizedRef;
+ SRefMultiple sref = _sizedRefMultiple;
if (gen2Count != _gen2Count && sref != null) {
// update _gen2Count
_gen2Count = gen2Count;