Re: [問題] 合成長字串時出現OutOfMemoryError
※ 引述《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
討論串 (同標題文章)