gpt4 book ai didi

java - 如何修复导入大型 JSON 文件时内存不足的问题

转载 作者:行者123 更新时间:2023-12-02 09:55:52 48 4
gpt4 key购买 nike

我想导入一个 5 GB 大小的 JSON 文件,但它显示内存不足错误。我通过放置 -Xmx7700m -Xms7700m -XX: + UseConcMarkSweepGC 来设置 JVM,因为我知道我的计算机有 8 GB RAM,但程序执行需要 45 分钟,然后向我显示以下错误:我正在使用 Maven 依赖项“com.googlecode.json-simple”版本:1.1.1

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded java.lang.OutOfMemoryError: Java heap space //if i put -Xmx5000m -Xms5000m

这是导入 JSON 文件的代码

 JSONParser parser = new JSONParser();

try {
Object obj = parser.parse(new FileReader("url.json"));

JSONObject jsonObject = (JSONObject) obj;
System.out.println(jsonObject);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}

我可以找到另一种解决方案来将 JSON 文件分成几部分并逐部分导入吗?

最佳答案

假设您的 JSON 文件是一个很大的 JSON 对象数组,这可以帮助您吗?:

import com.google.gson.stream.JsonReader;
import org.json.simple.JSONObject;
...


JsonReader jsonReader = new JsonReader(new InputStreamReader(new FileInputStream(theFile), StandardCharsets.UTF_8));
jsonReader.beginArray();
Gson gson = new GsonBuilder().create();
while (jsonReader.hasNext()) {
JSONObject currentJsonObject = gson.fromJson(jsonReader, JSONObject.class);
// do stuff
}
jsonReader.close();

关于java - 如何修复导入大型 JSON 文件时内存不足的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56018625/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com