第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

這個(gè)循環(huán)我是要從數(shù)據(jù)庫(kù)中提取20W條數(shù)據(jù),然后先放到一個(gè)ArrayList里,但為什么越跑越慢呢

這個(gè)循環(huán)我是要從數(shù)據(jù)庫(kù)中提取20W條數(shù)據(jù),然后先放到一個(gè)ArrayList里,但為什么越跑越慢呢

牛魔王的故事 2023-03-12 17:13:41
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時(shí)出錯(cuò)!!");}// 獲取城市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"));// 取 tagtag_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("已經(jīng)處理"+m+"條記錄!");}我已經(jīng)調(diào)整堆??臻g的大小,-Xms256m -Xmx768m,而且是在jbuilder2006下用純java的環(huán)境測(cè)試的!
查看完整描述

3 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

慢的原因是你在對(duì)List的循環(huán)中使用了List的get函數(shù).
典型的"Shlemiel噴涂算法",所以越跑越慢啊.
List里是一個(gè)鏈表,get方法會(huì)從頭一個(gè)個(gè)地?cái)?shù),越到后面,數(shù)的時(shí)間就越長(zhǎng).所以會(huì)慢..
你應(yīng)該修改方式,用下面的方法進(jìn)行循環(huán):
for(Iterator it = list.iterator(); it.hasNext() ;){
Map map = (Map)it.next();
// ...
}

查看完整回答
反對(duì) 回復(fù) 2023-03-15
?
飲歌長(zhǎng)嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

infoBean = new InfoBean(); 

我看問(wèn)題就出在這里,有20w條記錄,就創(chuàng)建了20w個(gè)對(duì)象,卻沒(méi)有及時(shí)銷(xiāo)毀!隨著創(chuàng)建的對(duì)象越來(lái)越多,內(nèi)存占用越來(lái)越大,當(dāng)然會(huì)越來(lái)越慢了.不內(nèi)存溢出算好的了

查看完整回答
反對(duì) 回復(fù) 2023-03-15
?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

說(shuō)的不一定對(duì)啊,你可以關(guān)注一下:
個(gè)人認(rèn)為
List rows = jdbcTemplate.queryForList(SQL_select_Entry,new Object[] { 140000,0 }); 
infoBean = new InfoBean(); 
這兩條語(yǔ)句都通過(guò)new方法建立了新的對(duì)象,其中一個(gè)還是臨時(shí)對(duì)象,這要從內(nèi)存中劃分空間的,好像沒(méi)看見(jiàn)你用delete清除掉這個(gè)對(duì)象,這樣在循環(huán)了幾萬(wàn)次之后,會(huì)產(chǎn)生很多的對(duì)象實(shí)例,這或許會(huì)使程序變得很慢。java雖然設(shè)有垃圾回收機(jī)制來(lái)回收不用的空間,但是沒(méi)人知道這個(gè)機(jī)制在什么時(shí)候運(yùn)行,如果你每次new的對(duì)象沒(méi)有及時(shí)delete的話,是會(huì)影響程序性能的。而且JBuilder由于自身的原因,編譯的速度本身也比較慢。
我不知道你的程序中是不是有辦法避開(kāi)使用對(duì)象,在如此大的循環(huán)中大量使用new方法,怕是會(huì)影響性能。

查看完整回答
反對(duì) 回復(fù) 2023-03-15
  • 3 回答
  • 0 關(guān)注
  • 221 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)