X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Freferencesource%2FSystem.Runtime.Caching%2FSystem%2FCaching%2FCacheMemoryMonitor.cs;h=0de026fa2520fed10151470a87d3f3d2ccfd86c5;hb=07adebd8bf94f2c4310421460940fd6c873b24d5;hp=8b32bedf742df80aaeba5119b2d5a6c05aba5524;hpb=4e751100fcfc6cd3d5766f357f2ceeef614866d0;p=mono.git diff --git a/mcs/class/referencesource/System.Runtime.Caching/System/Caching/CacheMemoryMonitor.cs b/mcs/class/referencesource/System.Runtime.Caching/System/Caching/CacheMemoryMonitor.cs index 8b32bedf742..0de026fa252 100644 --- a/mcs/class/referencesource/System.Runtime.Caching/System/Caching/CacheMemoryMonitor.cs +++ b/mcs/class/referencesource/System.Runtime.Caching/System/Caching/CacheMemoryMonitor.cs @@ -27,7 +27,7 @@ namespace System.Runtime.Caching { private long[] _cacheSizeSamples; private DateTime[] _cacheSizeSampleTimes; private int _idx; - private SRef _sizedRef; + private SRefMultiple _sizedRefMultiple; private int _gen2Count; private long _memoryLimit; @@ -44,14 +44,15 @@ namespace System.Runtime.Caching { _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; @@ -112,8 +113,8 @@ namespace System.Runtime.Caching { } 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; @@ -139,7 +140,7 @@ namespace System.Runtime.Caching { // 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;