我是这样读数据的:
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应该没问题。
1条答案
按热度按时间fzsnzjdm1#
我的方法是把它放入Intellij程序参数框。
如果使用IntelliJ运行程序,则为IntelliJ配置的内存限制也会限制程序。尝试从命令行独立运行它以获得更好的结果。