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专用字节。