java - 读取大文件并将它们存储在 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 时,进程挂起或抛出内存不足错误。完全坚持这个,请帮助解决这个问题。谢谢
解决方案
在处理大量输入/输出时,解决问题的最佳方法是将其分块。例如,您可以将每个数组列表的最大大小设置为 10000 并以块的形式处理每个数组列表。
但是,鉴于您的文件大小,我觉得您也许可以使用数据库,而不是尝试在内存中处理如此大的输入。你应该重新考虑你的方法。
推荐阅读
- c# - C# mod fails in Unity 3D
- reactjs - React: Saving mapping in select
- google-places-api - Is there anyway I can get all the locations inside a bounding box using google api?
- java - Converting Mono to Pojo without block
- php - 如果请求为 0,Laravel 查询获取全部
- java - 在jsp中显示错误登录消息
- dropbox-api - Dropbox Python API - Upload function
- git - Git缺少存储库上的文件和文件夹
- d3.js - D3 Error:
attribute d: Expected number, "MNaN,NaNLNaN,NaNL…" - c# - 操作子框架内的控件的最佳方法是什么?(UWP)