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

看板java作者 (痞子軍團團長)時間16年前 (2009/11/23 12:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《killeryagami (kira)》之銘言: : 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的問題,目前懷疑是這部份的程式碼 懷疑? 炸掉的時候會丟出一個 Exception,會告訴你炸在哪裡 (ㄜ... 補充:通常是遞迴傳到爆炸) : 在程式離開這個method之後,htmlcode是否會立即被回收(釋放空間)? 簡單一個概念,有被 reference 到的都不會被回收 再者,沒有被 reference 到的,也不一定是「立即」回收 另外,字串又有字串會發生的事情.... 抓網頁抓到記憶體爆炸... 我還沒發生過... 一個網頁(純 html 碼)能超過 1MB 就算厲害了 (一般使用者會先哭吧?) 除非你在一些很特別的平台上工作 不然,我的經驗是,根本不用調整也能正常運作 : 又例如 : String htmlcode = getPageHtml(url_1); : htmlcode = getPageHtml(url_2); : 那麼JVM中原本儲存的700行url_1的資料,是不是不會被馬上釋放? : 最近對於節省記憶體有點頭大,希望各位多多指教 m(_ _)m -- 侃侃長論鮮窒礙 首頁:http://www.psmonkey.idv.tw 眾目睽睽無心顫 Blog:http://ps-think.blogspot.com 煢居少聊常人事 殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.20.185.241
文章代碼(AID): #1B2Wg-be (java)
文章代碼(AID): #1B2Wg-be (java)