Newtonsoft.JSON占用内存和资源

时间:2019-03-19 23:37:50

标签: c# memory-management uwp json.net

我有一个UWP媒体应用程序,对于在后台模式下运行的Xbox One,它无法保持在128MB以下。使用内存探查器,似乎JSON.Net在反序列化甚至开始之前,反序列化完成和强制垃圾回收之后都利用了最多的资源。

基于我已阅读的所有内容,我正在实例化一个本地DefaultContractResolver,它不应缓存资源。我还从流中反序列化,根据JSON.Net,“性能技巧”是处理json的最节省内存的方法。我不知道为什么垃圾收集后仍然有这么多资源被保留。

反序列化之前:

enter image description here

反序列化和强制垃圾回收后:

enter image description here

反序列化代码:

public class JsonExtensions
{
    public T DeserializeStringNoCache<T>(string json, JsonSerializerSettings settings = null)
    {
        using (Stream s = StringHelper.GenerateStreamFromString(json))
        using (StreamReader sr = new StreamReader(s))
        using (JsonReader reader = new JsonTextReader(sr))
        {
            JsonSerializer serializer = new JsonSerializer();
            serializer.ContractResolver = new DefaultContractResolver();
            return serializer.Deserialize<T>(reader);
        }
    }
}

0 个答案:

没有答案