3 回答

TA貢獻1874條經驗 獲得超12個贊
慢的原因是你在對List的循環中使用了List的get函數.
典型的"Shlemiel噴涂算法",所以越跑越慢啊.
List里是一個鏈表,get方法會從頭一個個地數,越到后面,數的時間就越長.所以會慢..
你應該修改方式,用下面的方法進行循環:
for(Iterator it = list.iterator(); it.hasNext() ;){
Map map = (Map)it.next();
// ...
}

TA貢獻1951條經驗 獲得超3個贊
infoBean = new InfoBean();
我看問題就出在這里,有20w條記錄,就創建了20w個對象,卻沒有及時銷毀!隨著創建的對象越來越多,內存占用越來越大,當然會越來越慢了.不內存溢出算好的了

TA貢獻1998條經驗 獲得超6個贊
說的不一定對啊,你可以關注一下:
個人認為
List rows = jdbcTemplate.queryForList(SQL_select_Entry,new Object[] { 140000,0 });
infoBean = new InfoBean();
這兩條語句都通過new方法建立了新的對象,其中一個還是臨時對象,這要從內存中劃分空間的,好像沒看見你用delete清除掉這個對象,這樣在循環了幾萬次之后,會產生很多的對象實例,這或許會使程序變得很慢。java雖然設有垃圾回收機制來回收不用的空間,但是沒人知道這個機制在什么時候運行,如果你每次new的對象沒有及時delete的話,是會影響程序性能的。而且JBuilder由于自身的原因,編譯的速度本身也比較慢。
我不知道你的程序中是不是有辦法避開使用對象,在如此大的循環中大量使用new方法,怕是會影響性能。
添加回答
舉報