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方法,怕是会影响性能。
添加回答
举报