作者tkcn (小安)
看板java
标题Re: [问题] 合成长字串时出现OutOfMemoryError
时间Tue Jun 28 12:50:11 2011
※ 引述《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