如何使用BufferedReader将大量csv数据读入内存?

qc6wkl3g  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(155)

我是这样读数据的:

List<String[]> res = new ArrayList<>();

S3Object object = s3.getObject(s3BucketName, path);
InputStream inputStream = object.getObjectContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

while ((line = reader.readLine()) != null) {
    res.add(line.split(","));
}
reader.close();

它会在我读取10 M行后抛出OutOfMemory异常。
我尝试使用-Xms= 20 G-Xmx= 20 G作为参数,奇怪的是当我将其更改为-Xms= 2 m-Xmx= 2 m时,两个结果都是一样的,它们只能读取10 M行。我的方法是把它放入Intellij程序参数框。
我希望找到一种方法将所有行读入内存。我的文件是16 M行x 16列,只有1G大小,所以20 G应该没问题。

fzsnzjdm

fzsnzjdm1#

我的方法是把它放入Intellij程序参数框。
如果使用IntelliJ运行程序,则为IntelliJ配置的内存限制也会限制程序。尝试从命令行独立运行它以获得更好的结果。

相关问题