Re: [問題] Java heap space (已爬文)
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):