1

我有一个使用 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);
        }
    }
4

0 回答 0