日期:2014-05-17  浏览次数:20455 次

java调用SQLServer存储过程时提示out of memory
环境:java6+SQLServer2005
存储过程中主要是从不同的表中拿取数据,然后根据相应的逻辑,把符合条件的数据insert到另一个新表中去,存储过程会返回一个参数(就是一个状态而已,来表示执行存贮过程是否成功而已)。然后在java中用CallableStatement调用存贮过程,但是执行时报错:
[ERROR] com.microsoft.sqlserver.jdbc.SQLServerException: The system is out of memory. Use server side cursors for large result sets:Java heap space. Result set size:158,674,393. JVM total memory size:518,979,584
第一次遇到这个问题,请教各位了,谢谢!!

------解决方案--------------------
[ERROR] com.microsoft.sqlserver.jdbc.SQLServerException: The system is out of memory. Use server side cursors for large result sets:Java heap space. Result set size:158,674,393. JVM total memory size:518,979,584


意思很明白,内存不够.这个应该是配置的问题,而不是sql server有错误.
------解决方案--------------------
在tomcat中修改catalina.bat文件加上:

set JAVA_OPTS=-Xms64m -Xmx1024m

默认都是512,我看你那容量明显超过了512,可修改为1024,还不够的话,修改为2056,但是这个时候一定要看你所在机器的物理内存是多少,不要超过


------解决方案--------------------
这种情况一般是应用程序所在的服务器内存不足,并不是sqlserver所在的服务器内存不足