Tomcat内存设置

前言:
当上传大数据文件的时候,失败。经验证,出现OOM异常 。

过程:
windows的用绿色版tomcat:
set JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx1280m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

windows安装版tomcat(用服务启动tomat):这个是执行bin/tomcat.exe,不读取catalina.bat的配置
修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
原值为
-Dcatalina.home=”C:\ApacheGroup\Tomcat 5.0”
-Djava.endorsed.dirs=”C:\ApacheGroup\Tomcat 5.0\common\endorsed”
-Xrs
加入 -Xms300m -Xmx350m

linux:
在/usr/local/apache-tomcat-5.5.23/bin目录下的catalina.sh
添加:JAVA_OPTS=’-Xms512m -Xmx1024m’
要加“m”说明是MB,否则就是KB了,在启动tomcat时会报内存不足。
-Xms:初始值
-Xmx:最大值
-Xmn:最小值

remark:
设置JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。

最后跟用户说通过设置tomcat内存和分割excel解决。但是这毕竟不是解决之道。
想:
代码里面控制分次读取,读取后释放资源继续读取。
同时在导出excel的时候遇到OOM的异常的话,也可以使用分次写文件,或者写多个文件最后合并excel。
同时我在想,他那个超过65535行数据的excel怎么写的数据,应该是导出的…
这样的还是用csv或者txt什么的好。