我用poi产生excel时,由于从数据库取出的数据量太大,导致写excel文档时出现out of memory的异常。经过调查,发现数据集不是导致异常的原因,而是excel占内存太大导致的。因为我用BufferedWriter写成一个CSV时就不会产生异常。我现在还是想写成excel格式,但如何解决out of memory异常啊?

解决方案 »

  1.   

    加大你的xms和xmx
    程序运行时带上参数
    java -Xms256m -Xmx512m Test指定初始化内存为256m,可用最大内存为512m
      

  2.   

    -Xms256m -Xmx512m我也用了,确实能接受比较大的数据量,但是总有一个极限的。
    如果能不断向文件写入而不是一下子生成一个文件就好了。这样理论上只要一点内存就可以写任意大的文件了。
    jxl也有这个问题,它的官方网站上说过