Re: [問題] 合成長字串時出現OutOfMemoryError
※ 引述《tkcn (小安)》之銘言:
: ※ 引述《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!");
感謝t大的回應與指導,
不過多了String str = input.readLine()
記憶體會炸掉的問題 我還真的試不出來XD
不知道為了"不將文件第一行"也加到字串中,有沒有其他更好的方式呢?
寫這個程式的原因是想從文件中,截取特定範圍的字串,
但因為有換行的問題,所以想說把他串成字串後,
再來用substring截取,比較不會有計算上的困擾,
但記憶體炸掉這個問題卻無法克服。
之前是將整個文件檔寫到charArray中,再去截取,
現在想換StringBuffer方式來試試看,就遇到這些問題了,
不知道是否有更有效率的方式能達到我的目的呢?(截取特定範圍的字串)
非常感謝您的幫忙與指導。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.55.234
→
06/29 15:57, , 1F
06/29 15:57, 1F
→
06/29 17:06, , 2F
06/29 17:06, 2F
→
06/29 17:10, , 3F
06/29 17:10, 3F
→
06/29 18:44, , 4F
06/29 18:44, 4F
→
06/30 10:27, , 5F
06/30 10:27, 5F
→
06/30 10:40, , 6F
06/30 10:40, 6F
→
06/30 10:42, , 7F
06/30 10:42, 7F
→
06/30 11:04, , 8F
06/30 11:04, 8F
推
06/30 21:48, , 9F
06/30 21:48, 9F
→
06/30 21:50, , 10F
06/30 21:50, 10F
→
07/01 17:22, , 11F
07/01 17:22, 11F
→
07/01 17:23, , 12F
07/01 17:23, 12F
→
07/01 17:30, , 13F
07/01 17:30, 13F
→
07/01 17:32, , 14F
07/01 17:32, 14F
→
07/01 17:40, , 15F
07/01 17:40, 15F
→
07/01 17:45, , 16F
07/01 17:45, 16F
→
07/01 17:47, , 17F
07/01 17:47, 17F
→
07/01 17:49, , 18F
07/01 17:49, 18F
→
07/01 18:27, , 19F
07/01 18:27, 19F
※ 編輯: ntb 來自: 140.109.55.234 (07/01 18:27)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):