【发布时间】:2015-01-02 19:08:51
【问题描述】:
我有一个 Asp.Net 应用程序,其内存使用量逐渐增长到 2.5GB 甚至更多。网站大量使用System.Runtime.Caching.MemoryCache。
是否有代码可以知道System.Runtime.Caching.MemoryCache 使用了多少内存,所以我可以知道问题是缓存过多,还是应用程序中是否存在内存泄漏?
【问题讨论】:
我有一个 Asp.Net 应用程序,其内存使用量逐渐增长到 2.5GB 甚至更多。网站大量使用System.Runtime.Caching.MemoryCache。
是否有代码可以知道System.Runtime.Caching.MemoryCache 使用了多少内存,所以我可以知道问题是缓存过多,还是应用程序中是否存在内存泄漏?
【问题讨论】:
首先看PhysicalMemoryLimit。它有多大?将其设置为适合您环境的合理限制。
“PhysicalMemoryLimit 属性返回 MemoryCache 类的单个实例可以使用的总物理计算机内存的百分比。如果缓存实例超过指定的限制,缓存条目将被删除。”
还可以查看CacheMemoryLimit "获取计算机上可供缓存使用的内存量,以字节为单位。"
还要注意你的应用程序正在使用多少个缓存实例,希望它使用Default。
还要查看缓存条目的过期时间,一般是DefaultCacheCapabilities...
【讨论】: