Guten Abend,
ich möchte den MemoryCache nutzen um Ergebnisse zu cachen. Allerdings scheint sich der Cache nicht an das Limit zu halten.
Wenn ich das CacheMemoryLimit z.B. auf 492 MB festlege und das PhysicalMemoryLimit auf 3% setze (bei 16 GB sind das ca. 492 MB), werden trotzdem mehr als 2 GB gespeichert und auch wenn der PollingInterval abläuft wird der Speicherverbrauch nicht gesenkt. Es folgt auch keine OutOfMemoryException. Der Verbrauch sinkt nur wenn z.B. SlidingExpiration gesetzt ist.
ich möchte den MemoryCache nutzen um Ergebnisse zu cachen. Allerdings scheint sich der Cache nicht an das Limit zu halten.
Wenn ich das CacheMemoryLimit z.B. auf 492 MB festlege und das PhysicalMemoryLimit auf 3% setze (bei 16 GB sind das ca. 492 MB), werden trotzdem mehr als 2 GB gespeichert und auch wenn der PollingInterval abläuft wird der Speicherverbrauch nicht gesenkt. Es folgt auch keine OutOfMemoryException. Der Verbrauch sinkt nur wenn z.B. SlidingExpiration gesetzt ist.
C#-Quellcode
- MemoryCache cache = new MemoryCache("Cache", new NameValueCollection
- {
- {"cacheMemoryLimitMegabytes", "492"},
- {"physicalMemoryLimitPercentage", "3"},
- {"pollingInterval", "00:00:05" }
- });
- CacheItemPolicy policy = new CacheItemPolicy
- {
- Priority = CacheItemPriority.Default
- };
- try
- {
- for (int i = 0; i < Int32.MaxValue; i++)
- {
- cache.Add(i.ToString(), i, policy);
- }
- }
- catch (Exception exc)
- {
- Console.WriteLine(exc.ToString());
- }