看板 java 關於我們 聯絡資訊
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
killeryagami:額外資訊:Project需要Crawler至少30萬筆以上網頁 11/23 11:51
xlk:htmlcode是field,Class活多久field就活多久,若是30萬個class.. 11/23 13:59
xlk:更何況沒有人說一行一定要多少字元! 11/23 14:02
killeryagami:當Class不再被用到的時候就會準備回收嗎? 11/23 14:56
MonyemLi:不是多執行序的話 StringBuffer 可以拉出去外面共用 11/23 17:26
TonyQ:我還是認為先找出問題源頭再來作診斷,不要瞎作. 11/23 17:58
slalala:適時的將用不到的物件指向null 看看 11/23 20:46
NightPrince:不能用資料庫嗎? 11/23 23:21