我们如何使用Java迭代大小约为2 GB的JSON文件
发布时间:2020-12-15 08:26:48 所属栏目:Java 来源:网络整理
导读:我正在从数据库中读取3列值(大约50 000条记录),然后尝试在Json文件中搜索此值. Json文件包含200万个Json对象. 我尝试过以下方法. 方法1. JSONArray json = readJson(Constants.jsonFilePath);private JSONArray readJson(String jsonFilePath) { String cont
我正在从数据库中读取3列值(大约50 000条记录),然后尝试在Json文件中搜索此值. Json文件包含200万个Json对象.
我尝试过以下方法. 方法1. JSONArray json = readJson(Constants.jsonFilePath); private JSONArray readJson(String jsonFilePath) { String content = null; File file = new File(Constants.jsonFilePath); try { content = FileUtils.readFileToString(file,"utf-8"); } catch (IOException e) { e.printStackTrace(); } return new JSONArray(content); } 然后线性搜索所需的字段值 我测试了上面的代码对150 MB大小的文件,它工作得很好.但当我测试它的大小为2 GB的文件时,我得到OutOfHeapMemory错误. 方法2: 然后我尝试从文件中一次读取100 000个Json对象,然后检查所需的字段值,但过程非常慢. 我正在使用org.json库. 解决方法
当然它会很慢,这是一个庞大的数据量.
将其拆分为更易于管理的块是您唯一可以做的事情,并且您必须将性能损失视为开展业务的成本,因为它根本不适合内存. 当然你可以告诉JVM要求4GB的RAM并希望它足够了,但是处理这么多数据还需要相当多的时间. 这就留下了为什么你要尝试处理如此庞大的单个JSON对象的问题,存储批量数据的方法远远少于处理CPU和RAM密集程度的方法. 此时,您运行的不仅仅是JVM的合理预期,而是您的操作系统本身. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |