服务器:tomcat
简单描述:db中有460w+条记录,在@Service中,使用while true,一次从DAO层中select 出500条,逐条处理,处理完之后再select 出500条,直到select出来是空的list,就break;
问题:由于总共有460w条数据,还是逐条处理,所以程序跑了24小时都没有跑完,有没有可能出现full gc?如果出现full gc,原因可能是什么?
示意代码:
public void doProcess(){
while (true){
List<UserDTO> list = myDao.selectUserPage();
if (list.size()>0){
for (UserDTO userDTO:list){
//处理业务逻辑,每500条大致需要30多秒
}
}else {
break;
}
}
}
少年,我来给你做一道数学题,460w / 500 * 0.5分钟 / 60 = 76.67 小时,所以24小时没处理完是正常的。