java循环越跑越慢为什么?高手进
大家看下,这个循环我是要从数据库中提取20W条数据,然后先放到一个ArrayList里,但为什么越跑越慢呢?高手指点下.Listrows=jdbcTemplate.que...
大家看下,这个循环我是要从数据库中提取20W条数据,然后先放到一个ArrayList里,但为什么越跑越慢呢?高手指点下.
List rows = jdbcTemplate.queryForList(SQL_select_Entry,new Object[] { 140000,0 });
for(int m=0;m<rows.size();m++,counter++){
infoBean = new InfoBean();
infoBean.setEid(((Map) rows.get(m)).get("EID").toString());
infoBean.setSid(((Map) rows.get(m)).get("SID").toString());
infoBean.setContent(((Map) rows.get(m)).get("INTRO").toString());
infoBean.setTitle(((Map) rows.get(m)).get("TITLE").toString());
infoBean.setSecname(((Map) rows.get(m)).get("SECNAME").toString());
infoBean.setPubtime(((Map) rows.get(m)).get("CREATE_TIME").toString());
String xml = ((Map) rows.get(m)).get("XML_OBJECT").toString();
xml_reader = null;
try {
xml_reader = new XMLReader(xml);
} catch (IOException e) {
System.out.println("解析XML时出错!!");
}
// 获取城市
element = xml_reader.getElement(null, "city");
infoBean.setZone(element.getAttributeValue("name"));
infoBean.setAddress(xml_reader.getElementAtrribute("address"));
infoBean.setPhone(xml_reader.getElementAtrribute("linktel"));
infoBean.setLinkman(xml_reader.getElementAtrribute("linkman"));
// 取 tag
tag_view = "";
element_list = xml_reader.getElementAtrributes("tag");
for (int i = 0; i < element_list.size(); i++) {
if (tag_view.length() > 0) {
tag_view = tag_view + "/";
}
tag = StringUtil.returnValidStr(((Element) element_list.get(i)).getAttributeValue("name"));
tag_view = tag_view
+ "<a href=\"dosearch.shtml?q="
+ tag
+ "&view=2&type=l&encoding=gbk&area=tag\" target=\"_blank\" class=\"a01\" >"
+ tag + "</a>";
}
infoBean.setTag(tag_view);
infoBeanArrayList.add(m,infoBean);
//this.createXML(infoBean,m,out);
System.out.println("已经处理"+m+"条记录!");
}
我已经调整堆栈空间的大小,-Xms256m -Xmx768m,而且是在jbuilder2006下用纯java的环境测试的!
1楼的大仙,我不是让你给我列举原因,我知道有怎么样怎么样的原因,但我问的是这段代码到底什么地方会引起越跑越慢的原因,希望大家对自己的回答负责,不要从别的地方复制到这里,给点自己的意见,我的内存空间够用,我检测过内存使用状况。
而且我也说了,不是查询速度慢的问题,查询速度很快,也就是那个list返回的速度不用管,只管那个循环为什么越走越慢! 展开
List rows = jdbcTemplate.queryForList(SQL_select_Entry,new Object[] { 140000,0 });
for(int m=0;m<rows.size();m++,counter++){
infoBean = new InfoBean();
infoBean.setEid(((Map) rows.get(m)).get("EID").toString());
infoBean.setSid(((Map) rows.get(m)).get("SID").toString());
infoBean.setContent(((Map) rows.get(m)).get("INTRO").toString());
infoBean.setTitle(((Map) rows.get(m)).get("TITLE").toString());
infoBean.setSecname(((Map) rows.get(m)).get("SECNAME").toString());
infoBean.setPubtime(((Map) rows.get(m)).get("CREATE_TIME").toString());
String xml = ((Map) rows.get(m)).get("XML_OBJECT").toString();
xml_reader = null;
try {
xml_reader = new XMLReader(xml);
} catch (IOException e) {
System.out.println("解析XML时出错!!");
}
// 获取城市
element = xml_reader.getElement(null, "city");
infoBean.setZone(element.getAttributeValue("name"));
infoBean.setAddress(xml_reader.getElementAtrribute("address"));
infoBean.setPhone(xml_reader.getElementAtrribute("linktel"));
infoBean.setLinkman(xml_reader.getElementAtrribute("linkman"));
// 取 tag
tag_view = "";
element_list = xml_reader.getElementAtrributes("tag");
for (int i = 0; i < element_list.size(); i++) {
if (tag_view.length() > 0) {
tag_view = tag_view + "/";
}
tag = StringUtil.returnValidStr(((Element) element_list.get(i)).getAttributeValue("name"));
tag_view = tag_view
+ "<a href=\"dosearch.shtml?q="
+ tag
+ "&view=2&type=l&encoding=gbk&area=tag\" target=\"_blank\" class=\"a01\" >"
+ tag + "</a>";
}
infoBean.setTag(tag_view);
infoBeanArrayList.add(m,infoBean);
//this.createXML(infoBean,m,out);
System.out.println("已经处理"+m+"条记录!");
}
我已经调整堆栈空间的大小,-Xms256m -Xmx768m,而且是在jbuilder2006下用纯java的环境测试的!
1楼的大仙,我不是让你给我列举原因,我知道有怎么样怎么样的原因,但我问的是这段代码到底什么地方会引起越跑越慢的原因,希望大家对自己的回答负责,不要从别的地方复制到这里,给点自己的意见,我的内存空间够用,我检测过内存使用状况。
而且我也说了,不是查询速度慢的问题,查询速度很快,也就是那个list返回的速度不用管,只管那个循环为什么越走越慢! 展开
12个回答
展开全部
不好意思啊!我对电脑不太懂,你上面的代码我更是看得头发昏.所以不能帮你咯,我是到投诉吧偶尔看到你的帖子才进来的.你都看的懂这么多代码想必也是高手咯,那你还是自己解决吧.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我看过楼主的投诉帖子了!
我坚决支持楼主。TMD百度就是不办事,问题显示不出来也不管!
我坚决支持楼主。TMD百度就是不办事,问题显示不出来也不管!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |