首页 > 解决方案 > 读取大文件并将它们存储在 pojo 中,然后在 arraylist 中

问题描述

嗨,我有我的程序结构 - 在 Spring Boot 项目中,如下所示:

在服务类中:文件 1 - 加载到 arraylist1(pojos 列表)

文件 2 -- 加载到 arraylist2(pojos 列表)

文件 3- 在 arraylist3 中加载(pojos 列表)

输入文件 --- 解析并加载到数组列表中。输出 Arraylist for (迭代输入文件-arraylist){

//for output field 1
for(iterate in file1){
    if field available in file1 - assign output column
else
reject record..
}

//for output field 2
for(iterate in file2){
    if field available in file2 - assign output column
else
reject record..
}


//for output field 3
for(iterate in file3){
    if field available in file3 - assign output column
else
reject record..
}

assign to other output fields from input fields..

output field 4=inputfield 4
output field 5=inputfield 5
output field 6=inputfield 6
output field 7=inputfield 7
output field 8=inputfield 8

outputList.add(输出 pojo) }

因此,在读取 2 gb 的文件 2 时,进程挂起或抛出内存不足错误。完全坚持这个,请帮助解决这个问题。谢谢

标签: javaspring

解决方案


在处理大量输入/输出时,解决问题的最佳方法是将其分块。例如,您可以将每个数组列表的最大大小设置为 10000 并以块的形式处理每个数组列表。

但是,鉴于您的文件大小,我觉得您也许可以使用数据库,而不是尝试在内存中处理如此大的输入。你应该重新考虑你的方法。


推荐阅读