作者killeryagami (kira)
看板java
标题[问题] Java heap space (已爬文)
时间Mon Nov 23 11:48:43 2009
JVM能吃的Memory有限,所以我有几个问题想请教各位神人
平常在程式撰写的时候,都用什麽方式节省记忆体?
再者是我的一部份程式码,用途是读取页面原始码
public String getHtmlCode(String url,String encode)throws IOException{
StringBuffer sb = new StringBuffer();
if(checkUrl(url)){ //这个地方是判断是不是我要的网页
try {
toConnection(url);
br = new BufferedReader(new InputStreamReader(urlConn.
getInputStream(), encode));
int count = 0;
String line = "";
while ((line = br.readLine()) != null && count<= 700 ) {
//为了不让资料过大,所以只读取700行的原始码
sb.append(line.intern());
count++;
}
br.close();
toDisconnect();
} catch (Exception e) {
System.out.println("Paser: " + e);
}
this.htmlcode = sb.toString();
}
return this.htmlcode;
}
我的Project出现Java heap space的问题,目前怀疑是这部份的程式码
在程式离开这个method之後,htmlcode是否会立即被回收(释放空间)?
又例如
String htmlcode = getPageHtml(url_1);
htmlcode = getPageHtml(url_2);
那麽JVM中原本储存的700行url_1的资料,是不是不会被马上释放?
最近对於节省记忆体有点头大,希望各位多多指教 m(_ _)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.18.52
1F:→ killeryagami:额外资讯:Project需要Crawler至少30万笔以上网页 11/23 11:51
2F:→ xlk:htmlcode是field,Class活多久field就活多久,若是30万个class.. 11/23 13:59
3F:→ xlk:更何况没有人说一行一定要多少字元! 11/23 14:02
4F:→ killeryagami:当Class不再被用到的时候就会准备回收吗? 11/23 14:56
5F:→ MonyemLi:不是多执行序的话 StringBuffer 可以拉出去外面共用 11/23 17:26
6F:→ TonyQ:我还是认为先找出问题源头再来作诊断,不要瞎作. 11/23 17:58
7F:推 slalala:适时的将用不到的物件指向null 看看 11/23 20:46
8F:推 NightPrince:不能用资料库吗? 11/23 23:21