为了绕过Xml序列化器内存泄漏事件,我创建了以下内容:
public static class XmlSerializerCache
{
public static XmlSerializer GetXmlSerializer(Type type, XmlRootAttribute xmlRoot)
{
var cache = System.AppDomain.CurrentDomain;
var key = String.Format(CultureInfo.InvariantCulture, "CachedXmlSerializer:{0}:{1}", type, xmlRoot.ElementName);
var serializer = cache.GetData(key) as XmlSerializer;
if (serializer == null)
{
serializer = new XmlSerializer(type, xmlRoot);
cache.SetData(key, serializer);
}
return serializer;
}
}据我所知,生成的程序集在AppDomain卸载后立即卸载。所以我想我可以使用AppDomain缓存来缓存序列化程序。
这个方法好吗?或者至少是个“防泄漏”的?
发布于 2013-04-08 16:12:27
根据kb文章条目中提到的博客部分的工作,您的解决方案看起来是正确的。
https://codereview.stackexchange.com/questions/24861
复制相似问题