w3wp在700mb-1.2gb的内存之间使用不负载

时间:2013-04-11 01:31:47

标签: asp.net asp.net-mvc-3 entity-framework redgate

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

0 个答案:

没有答案