Java处理超大JSON文件,避免OOM内存溢出 我会带着你远行 2024-03-26 18:08 13阅读 0赞 ## 前言 ## 如果你需要在 Java 中处理一个大的 JSON 对象或 文件,直接使用**Gson**解析或**FastJson**解析,会很容易出现耗尽内存的情况。即使原始数据大小小于内存容量,Java也会进一步增加内存使用量。这意味着程序会在与磁盘交互时处理缓慢,或在内存不足时崩溃。 一种常见的解决方案是**流解析**,也就是惰性解析、迭代解析或分块处理。下面我将用流解析**InputStreamReader**和**Gson**处理大JSON文件: * 定义文件字节流 * 根据路径创建一个对象 * 根据文件流创建字符流对象 * 构建Gson对象,创建Gson对象时调用create()方法,将Gson的配置信息作为默认配置信息 * 使用fromJson()方法来实现从Json相关对象到Java实体 public static <T>T ReadJSonTextToObject(String path,Class<T> type) { FileInputStream fis= null; T obj = null; try { fis = new FileInputStream(path); } catch (FileNotFoundException e) { e.printStackTrace(); } try(Reader reader = new InputStreamReader(fis,"UTF-8")){ Gson gson = new GsonBuilder().create(); obj = gson.fromJson(reader, type); } catch (IOException e) { e.printStackTrace(); return null; } return obj; }
还没有评论,来说两句吧...