已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。
昨天关门了。
Improve this question
我遇到了一个问题,我试图在一个有2.32亿条记录的表上使用选择查询时内存不足。特定的字段是一个17个字符的字符串。我的任务基本上是连接到一个特定的表,获取所选的数据,然后使用该数据调用API。然后将其摄取到另一个表。当然,我是,内存不足。有人有什么建议吗?我保持一般,因为我不能共享代码库,但我想知道这种设计是否应该与这么大的数据集工作。
下面是我的跑步机。
@Override
public void run(ApplicationArguments args) {
final long startTimeAt = System.currentTimeMillis();
// List with all the data from AT database
List<Data> data = DataRepository.getData(); //ERROR
final long endTimeAt = System.currentTimeMillis();
log.info("AT data retrieval took time: {}", endTimeAt - startTimeAt);
这就是我获取数据的方式
@Override
public List<Data> getData() {
jdbcTemplate.setFetchSize(10000);
return jdbcTemplate.query(getVinDataQuery, new BeanPropertyRowMapper<>(Data.class));
}
如果有帮助,这里是我得到的错误:java.lang.OutOfMemoryError: Java heap space
1条答案
按热度按时间af7jpaap1#
您不需要将整个数据集加载到内存中,而是应该动态处理它:
例如: