今天在測試「生成報告「功能時,出現了這個問題,java拋出java.lang.OutOfMemoryError: Java heap space:java
因爲開發使用的tomcat是統一配置的,並且其餘地方的文件生成功能正常,因此排除jvm配置的問題,根據java日誌,發現仍是代碼問題tomcat
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()出現堆溢出app
解決辦法是設置一個臨界值,當filein大小達到臨界值,就作一次寫操做,因爲要分段寫,jvm
fos=new FileOutputStream(file,true);改爲追加模式。