如何解决加载JSON文件:java.lang.OutOfMemoryError:Java堆空间
我遇到一个问题,我试图读取一个非常大的JSON文件,它给了我一个内存错误,因为我发现的所有内容都直接加载到数组中,而不是能够逐个对象地访问。
我的代码是:
Object obj = parser.parse(new FileReader("file.json"));
JSONArray jsonObject = (JSONArray) obj;
Iterator<JSONObject> iterator = jsonObject.iterator();
while (iterator.hasNext()) {
...
}
我发现的所有内容都不允许我按需装载物品,有人知道这是否可能吗?
解决方法
我不知道您使用哪个库进行JSON解析。根据我的经验,我建议您使用Jackson library完成此任务。它具有流支持来管理文件,并避免将所有数据加载到内存中,然后将它们转换为JSON。 Jackson允许您将JSON数据格式转换为POJO。
如果您需要简短的教程来查看如何使用它,可以遵循this link和this link。
,据我所知,这最适合 mmap文件(内存映射文件),您可以在其中访问比可用内存大得多的内存中的文件。它给您错误的感觉,即已将完整的文件加载到内存中。
我非常确定应该已经在mmap文件上建立了一些框架抽象来处理 json 文件。我只是给你一个建议而不是解决方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。