今天在测试“生成报告“功能时,出现了这个问题,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);改成追加模式。