/// <summary> /// Clears the cache. /// </summary> public void Flush() { lock (_lockObj) { if (_cache != null) { _cache.Dispose(); _ttls.Clear(); } _cache = new System.Runtime.Caching.MemoryCache("stackredis.l1.objmemcache"); } }
/// <summary> /// Releases unmanaged and - optionally - managed resources /// </summary> /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> protected virtual void Dispose(bool disposing) { if (disposing) { _cache.Dispose(); } }
public void Dispose() { if (mc != null) { mc.Dispose(); } }
public void Dispose() { _memoryCache.Dispose(); }
public override void ClearAll() { _cache.Dispose(); _cache = System.Runtime.Caching.MemoryCache.Default; }
public void Dispose() { _cache?.Dispose(); }
private static void MemorySizePerformance() { /* * Some numbers: * --------------------------------------------------------------------------------------------------------- * 10k objects * --------------------------------------------------------------------------------------------------------- * maxStringSize repeatStringSize serialized vs Raw compression vs raw * 1 1 92.4% 93.8% * 17 1 88.7% 90.0% * 128 1 73.9% 74.7% * 2 2 92.7% 93.8% * 17 2 86.7% 89.7% * 128 2 73.9% 74.7% * 4 4 90.5% 91.6% * 17 4 86.7% 89.7% * 128 4 73.9% 68.8% * 128 128 73.9% 56.8% * * 10,000 10,000 50.7% 1.8% * 100,000 100,000 50.1% 0.2% */ const int MAX_STRING_SIZE = 10000; const int REPEAT_STRING_SIZE = 10; const int ITERATIONS = 1000; const string KEY = "impt-key"; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); long mCs = GC.GetTotalMemory(true); MemoryCache cM = new MemoryCache("cM"); for (int i = 0; i < ITERATIONS; i++) { var m = new MultipleProperties { Id = GenerateId(), Name = GenerateString(MAX_STRING_SIZE, REPEAT_STRING_SIZE) }; byte[] s = ProtoBufSerializer.Serialize(m); byte[] c = SmartCompressor.Instance.CompressAsync(s).Result; cM.Set(KEY + i.ToString(CultureInfo.InvariantCulture), c, null); } long mCe = GC.GetTotalMemory(true); long compressMemory = mCe - mCs; cM.Trim(100); cM.Dispose(); // ReSharper disable once RedundantAssignment cM = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); long mSs = GC.GetTotalMemory(true); MemoryCache sM = new MemoryCache("sM"); for (int i = 0; i < ITERATIONS; i++) { var m = new MultipleProperties { Id = GenerateId(), Name = GenerateString(MAX_STRING_SIZE, REPEAT_STRING_SIZE) }; byte[] s = ProtoBufSerializer.Serialize(m); sM.Set(KEY + i.ToString(CultureInfo.InvariantCulture), s, null); } long mSe = GC.GetTotalMemory(true); long serializeMemory = mSe - mSs; sM.Trim(100); sM.Dispose(); // ReSharper disable once RedundantAssignment sM = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); long mRs = GC.GetTotalMemory(true); MemoryCache rM = new MemoryCache("rM"); for (int i = 0; i < ITERATIONS; i++) { var m = new MultipleProperties { Id = GenerateId(), Name = GenerateString(MAX_STRING_SIZE, REPEAT_STRING_SIZE) }; rM.Set(KEY + i.ToString(CultureInfo.InvariantCulture), m, null); } long mRe = GC.GetTotalMemory(true); long rawMemory = mRe - mRs; rM.Trim(100); rM.Dispose(); // ReSharper disable once RedundantAssignment rM = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.WaitForPendingFinalizers(); Console.WriteLine("Memory Size:"); Console.WriteLine(" Raw: {0:#,##0.#}KB", rawMemory / 1024.0); Console.WriteLine( " Serialized: {0:#,##0.#}KB ({1:0.00}%)", serializeMemory / 1024.0, ((float)serializeMemory / rawMemory) * 100); Console.WriteLine( " Serialized + Compressed: {0:#,##0.#}KB ({1:0.00}%)", compressMemory / 1024.0, ((float)compressMemory / rawMemory) * 100); }
public override void Dispose() => _memoryCache.Dispose();
/// <summary> /// Clear cache. /// </summary> public void Clear() { _cache.Dispose(); }