我的机器配置为 E5300,2.6GHz,2GB内存,Netbeans 6.5,NetBeans自带的Tomcat6.0.18。报表程序需要生成excel文件,记录数为2万条左右,最后生成的excel文件约10M,在netbeans里调试,报错:Java heap space。根据网上的资料,我调整了netbeans的设置,netbeans.conf里:-J-Xms512m -J-Xmx1024m,但是这个好像没有起作用。
我发布程序到tomcat环境,启动tomcat前设置参数:set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m,这样程序运行就没有问题。可见程序确实是因为堆栈大小的问题,但是参数在netbeans里没有起作用,我在netbeans的工具条上,选择内存,查看运行时程序的内存为50-80M/508M,说明我设置的堆的最小、最大没有起作用。
这个问题该怎么解决呢?我们来看看netbeans怎么启动tomcat的:netbeans启动tomcat的时候,执行的是Tomcat安装目录/bin/下的catalina.bat,你也可以自己定制启动脚本,在netbeans里选择服务器-tomcat-属性-启动,勾选“使用定制的catalina脚本”,这样可以随意定制启动脚本了。
把jvm内存设置的参数:set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m添加到catalina.bat或者定制的启动脚本里,就可以了,运行我的程序,一切ok,生成的excel顺利导出。