环境: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
第一次遇到这个问题,请教各位了,谢谢!!

解决方案 »

  1.   

    [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有错误.
      

  2.   

    大概是说:SQL SERVER端打开了大容量的游标,导致内存不够用。
    把你的游标改成:DECLARE cursor_name CURSOR STATIC LOCAL FORWARD_ONLY READ_ONLY 试试
      

  3.   

    在tomcat中修改catalina.bat文件加上:set JAVA_OPTS=-Xms64m -Xmx1024m默认都是512,我看你那容量明显超过了512,可修改为1024,还不够的话,修改为2056,但是这个时候一定要看你所在机器的物理内存是多少,不要超过
      

  4.   

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

  5.   

    对的,确实是因为sun glassfish服务器的内存不足引起的。办法如4楼所说!