java 板


LINE

※ 引述《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
1F:→ tkcn:我拿你的程式,依照你的描述去跑,沒有遇到任何錯誤。 06/29 15:57
2F:→ ntb:冏..我是直接在dos下key..java指令執行...還是不行 06/29 17:06
3F:→ ntb:請問t大有用什麼IDE工具嗎?謝謝 06/29 17:10
4F:→ tkcn:sun sdk 1.6.0_24 @ Linux,沒用其他工具或下任何參數 06/29 18:44
5F:→ ntb:謝謝t大,我也去linux下試試好了 06/30 10:27
6F:→ dou0228:用 FileChannel.map 配合 MappedByteBuffer 吧 06/30 10:40
7F:→ dou0228:不過一樣不要直接 mapping 全部到 memory 請自己切斷 06/30 10:42
8F:→ dou0228:MappedByteBuffer有檔案無法砍問題: http://goo.gl/NGBMV 06/30 11:04
9F:推 undeadj:str建立釋放太多次了,跳一行直接下input.readLine(); 06/30 21:48
10F:→ undeadj:把str,input,sb拉到外面去,用reference的方式 06/30 21:50
11F:→ ntb:感謝d大,不過要map前我還是要先串成一行,不然換行符號的問題 07/01 17:22
12F:→ ntb:還是會造成計算上的不便@@ 07/01 17:23
13F:→ ntb:也非常感謝u大的建議,我將str,input,sb拉到while外宣告,在 07/01 17:30
14F:→ ntb:winXP x86下執行,還是會爆@@ 07/01 17:32
15F:→ dou0228:沒用阿 一個檔案40mb 不改演算法就只能改 heap size 07/01 17:40
16F:→ dou0228:而且你只是要 sb.length? 那直接 file.length() 不就好了 07/01 17:45
17F:→ dou0228:改你的演算法吧,否則和 PHP 的 copy() 一樣浪費記憶體 07/01 17:47
18F:→ dou0228:如果你檔案不是40MB,而是 2G 那你還不用改演算法嗎? XDDD 07/01 17:49
19F:→ ntb:謝謝d大的指教XD 其實我不只是要看length啦 我來換您的方法試試 07/01 18:27
※ 編輯: ntb 來自: 140.109.55.234 (07/01 18:27)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP