Re: [問題] 合成長字串時出現OutOfMemoryError

看板java作者 (小安)時間14年前 (2011/06/28 12:50), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《ntb (錩哥超口愛)》之銘言: : 我的程式目的是想將文字檔變成一行字串 (StringBuffer的物件) : 每個檔案的大小約40 mb, : 因為第一行的標題不想串入StringBuffer的物件內, : 所以想跳掉第一行, : 但不知道為什麼少串這行,在執行時反而會發生錯誤。 預設的 heap size 是 64 mb, 你的一個檔案就 40 mb,加上一些其他的資源,像是 buffer,還會再多些。 當迴圈多做幾次後,如果 gc 來不及回收就炸掉,應該也是蠻有可能的。 : (若拿掉String str = input.readLine()就可以) 這個我看不出原因,能否多試幾次看看。 : while ((str = input.readLine()) != null){ : sb = sb.append(str); 這行寫成 sb.append(str) 就可以了, 因為 sb.append(...) 回傳的仍然是 sb 的 refrence。 這是為了方便你連接多個 append 用的, ex: sb.append("Hello ").append("world!"); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.78.231
文章代碼(AID): #1E2Ls6En (java)
討論串 (同標題文章)
文章代碼(AID): #1E2Ls6En (java)