首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在XmlSerializer中缓存AppDomain

在XmlSerializer中缓存AppDomain
EN

Code Review用户
提问于 2013-04-08 16:01:47
回答 1查看 1.9K关注 0票数 1

为了绕过Xml序列化器内存泄漏事件,我创建了以下内容:

代码语言:javascript
运行
复制
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缓存来缓存序列化程序。

这个方法好吗?或者至少是个“防泄漏”的?

EN

回答 1

Code Review用户

发布于 2013-04-08 16:12:27

根据kb文章条目中提到的博客部分的工作,您的解决方案看起来是正确的。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/24861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档