今天在测试“生成报告“功能时,出现了这个问题,java抛出java.lang.OutOfMemoryError: Java heap space:
由于开发使用的tomcat是统一配置的,而且其他地方的文件生成功能正常,所以排除jvm配置的问题,根据java日志,发现还是代码问题
StringBuffer buf=
new StringBuffer();
FileOutputStream fos=
null;
BufferedWriter bw=
null;
while(
if((temp=br.readLine())!=
null)){
buf.append(temp);
buf.append("\n"
);
}
buf.append(filein);
fos=
new FileOutputStream(file);
OutputStreamWriter osw=
new OutputStreamWriter (fos,"UTF-8"
);
bw=
new BufferedWriter(osw);
bw.write(buf.toString());
bw.flush();
object.close()...
以上是部分代码,问题出在bw.write(buf.toString());buf.toString()上,由于filein字符串很大,buf拼接后toString()出现堆溢出
解决办法是设置一个临界值,当filein大小达到临界值,就做一次写操作,由于要分段写,
fos=new FileOutputStream(file,true);改成追加模式。
转载于:https://www.cnblogs.com/kaizhengMan/p/11098988.html