[問題] Java heap space (已爬文)

看板java作者 (kira)時間16年前 (2009/11/23 11:48), 編輯推噓2(206)
留言8則, 6人參與, 最新討論串1/3 (看更多)
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

11/23 11:51, , 1F
額外資訊:Project需要Crawler至少30萬筆以上網頁
11/23 11:51, 1F

11/23 13:59, , 2F
htmlcode是field,Class活多久field就活多久,若是30萬個class..
11/23 13:59, 2F

11/23 14:02, , 3F
更何況沒有人說一行一定要多少字元!
11/23 14:02, 3F

11/23 14:56, , 4F
當Class不再被用到的時候就會準備回收嗎?
11/23 14:56, 4F

11/23 17:26, , 5F
不是多執行序的話 StringBuffer 可以拉出去外面共用
11/23 17:26, 5F

11/23 17:58, , 6F
我還是認為先找出問題源頭再來作診斷,不要瞎作.
11/23 17:58, 6F

11/23 20:46, , 7F
適時的將用不到的物件指向null 看看
11/23 20:46, 7F

11/23 23:21, , 8F
不能用資料庫嗎?
11/23 23:21, 8F
文章代碼(AID): #1B2WOTk9 (java)
文章代碼(AID): #1B2WOTk9 (java)