C# 使用Json.Net解析175Mb Json文件会占用大量内存
我有175MB的json文件,我正在将该文件数据加载到一个静态JObject变量中以用于查询。然而,在运行控制台应用程序时,我可以看到这个进程占用了2.5GB内存 以下是我的代码片段: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();
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交互以进行频繁的数据查询