Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Json.Net解析175Mb Json文件会占用大量内存_C#_Json.net - Fatal编程技术网

C# 使用Json.Net解析175Mb Json文件会占用大量内存

C# 使用Json.Net解析175Mb Json文件会占用大量内存,c#,json.net,C#,Json.net,我有175MB的json文件,我正在将该文件数据加载到一个静态JObject变量中以用于查询。然而,在运行控制台应用程序时,我可以看到这个进程占用了2.5GB内存 以下是我的代码片段: public class LocationData { public static JObject LOCATION { get; set; } public static void FillData() { JArray jArray = new JArray();

我有175MB的json文件,我正在将该文件数据加载到一个静态JObject变量中以用于查询。然而,在运行控制台应用程序时,我可以看到这个进程占用了2.5GB内存

以下是我的代码片段:

public class LocationData
{
    public static JObject LOCATION { get; set; }

    public static void FillData()
    {
        JArray jArray = new JArray();

        using (StreamReader file = File.OpenText("somefiles.json"))
        using (JsonTextReader reader = new JsonTextReader(file))
        {
            jArray.Add(JObject.ReadFrom(reader));
        }

        LocationData.LOCATION = new JObject(new JProperty("Location", jArray));
        jArray = null;
    }
}
此后我填写了一次位置,这是我的GetData代码,用于从位置查询数据:

 LocationData.LOCATION.SelectTokens(tokenString).ToList();
我想找到一个解决方案来处理这些数据,并将数据保存在内存中(因为我想经常使用这些数据),并充分利用内存。我请求您帮助我了解在C#应用程序中管理此类数据应遵循的最佳实践。如果您需要更多信息来回答此问题,请务必让我知道


提前感谢。

在将JSON作为
JObject
阅读之前,我会找到一种方法来分解它。无论您如何处理,这都是大量的数据。如果您可以编辑输入json文件,而不是将其作为一个大数组,将其分为多个数组,那么您所需要做的就是选择分割点,并添加结束点,然后开始[在这些点上。然后你可以一个接一个地读取每个数组。另请看这篇文章:@PiJei:我已经在jArray中将json文件分解为多个部分。但是,文件总重量为75MB。如果你将文件转换为sql表,并在其中有一个对象作为记录,会怎么样?这需要一些工作,但可能值得。@PiJei:我想要我不希望频繁使用此数据集,因此使用静态变量。您可以建议任何其他方法。我不希望与sql交互以进行频繁的数据查询