加载XML后,IIS池的专用字节大大增加

时间:2017-08-03 13:34:03

标签: c# iis memory-leaks garbage-collection datacontractserializer

            try
                {
                    using (FileStream fs = new FileStream(filePathAndName, FileMode.Open))
                    {
                        using (XmlReader xmlReader = XmlReader.Create(fs))
                        {
                            using (XmlDictionaryReader xmlDictionaryReader = XmlDictionaryReader.CreateDictionaryReader(xmlReader))
                            {
                                DataContractSerializer deserializer = new DataContractSerializer(typeof(T));
                                obj = (T)deserializer.ReadObject(xmlDictionaryReader);
                                xmlDictionaryReader.Dispose();
                            }
                            xmlReader.Dispose();
                        }
                        fs.Dispose();
                    }
                }

上面提到的代码将我的IIS池的私有字节增加了300 MB。加载的文件数量约为16,000,平均大小为3 KB。这大概是大约60 MB的数据导致内存增加300 MB。

我在这里缺少什么导致私人字节气球如此之多?我可以提高效率吗?

有趣的观察:我尝试在加载所有文件后立即添加GC.Collect(),它减少了GC.GetTotalMemory(false)但不影响IIS APP POOL专用字节。

0 个答案:

没有答案