问题描述
我要导出一个10W条记录的文件,但是tomcat后台报java.lang.OutOfMemoryError:Javaheapspace异常我用已经用了两种方法不行1./tomcat/bin/catalina.bat加上下面的命令:在remGuessCATALINA_HOMEifnotdefined这句话的下面加setJAVA_OPTS=-Xms32m-Xmx256m2.修改TOMCAT_HOME/bin/catalina.sh在「echo"UsingCATALINA_BASE:$CATALINA_BASE"」上面加入以下行:JAVA_OPTS="-server-Xms800m-Xmx800m-XX:MaxNewSize=256m"哦还有我试了下1W条记录3个字段就可以导出,后改成1W条记录10个字段就异常了。我是通过eclipse启动的TOMCAT,tomcat版本是6.0的
解决方案
本帖最后由 aiqwe 于 2011-01-14 15:40:44 编辑
解决方案二:
该回复于2011-01-14 16:06:40被版主删除
解决方案三:
分批导行不
解决方案四:
分批导出然后合并文件
解决方案五:
哦还有我试了下1W条记录3个字段就可以导出,后改成1W条记录10个字段就异常了。那说明你调整后的内存还是不够大
解决方案六:
eclipse下应该不是从catalina.bat执行的tomcat所以从命令行启动tomcat然后修改/tomcat/bin/catalina.bat加上下面的命令:setJAVA_OPTS=-Xms512m-Xmx512m就没问题了
解决方案七:
不停的扩大内存根本就不是一个从根本上来解决的办法,而且就得是JVM也有最大的内存管理数的。你应该分批来做导出的操作,比如先导5W然后再导另外的5W。你在程序里面控制一下就可以了。
解决方案八:
引用楼主aiqwe的回复:
JAVA_OPTS="-server-Xms800m-Xmx800m-XX:MaxNewSize=256m"
前几天看到文章,说xms和xmx是java程序用的permsize和maxpermsize才是jvm用的既然是javaheapspace异常设置下permsize和maxpermsize这两个参数看看行不。另外-server可以去掉如果不是放到服务器上的tomcat
解决方案九:
我也赞成分批导出,你先导出1000条,再用append模式的writer/outputStream再导出1000条,慢慢来就行了。
解决方案十:
内存溢出了。
解决方案十一:
这个方法只适合纯tomcat不能用eclipse启动使用~
解决方案十二:
有没有能给出一个能eclipse启动的方案~是不是设置eclipse呢?