我有一个使用 EF/Autofac 和 memcached(3 个前端服务器)的 MVC3 应用程序。启动应用程序时,一个用户会迅速跃升至 300mb。在我们的生产站点(流量较低(任何时候<10 个用户))上,它可以轻松达到超过 1.2gb 的内存。这对我来说似乎是一个非常大的数字。
我尝试过 Redgate Memory Profiler,但我似乎找不到任何不寻常的东西。
我唯一能想到的可能是以下代码导致某种内存泄漏你怎么看?
private Dictionary<string, object> cacheDictionary = new Dictionary<string, object>();
private IMemcachedClient _client;
public MemcachedManager(IMemcachedClient client)
{
this._client = client;
}
#region ICacheManager Members
public T Get<T>(string key)
{
object data;
if (!cacheDictionary.TryGetValue(key, out data))
{
byte[] byteData = _client.Get<byte[]>(key);
data = CommonHelper.Deserialize<T>(byteData);
cacheDictionary.Add(key, data);
}
return (T)data;
}
public void Set(string key, object data, int cacheTime)
{
if (!cacheDictionary.ContainsKey(key)) //if memcache turned off this should still work
cacheDictionary.Add(key, data);
data = CommonHelper.Serialize(data);
bool setCache = _client.Store(StoreMode.Set, key, data, DateTime.Now.AddMinutes(cacheTime));
if (!setCache)
{
log.ErrorFormat("Failed to set the cache item, key {0}", key);
}
}