数据库为Sqlserver2005,tomcat: 为6.0.16安装版root cause com.microsoft.sqlserver.jdbc.SQLServerException: 系统内存不足。请对大型 ResultSet 使用服务器端游标: Java heap space。ResultSet 大小:1,650,699。JVM 总内存大小:66,650,112。
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PreparedStatementExecutionRequest.executeStatement(Unknown Source)
com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerStatement.doCursorFetch(Unknown Source)
com.microsoft.sqlserver.jdbc.ServerFetchBuffer.doServerFetch(Unknown Source)
com.microsoft.sqlserver.jdbc.ServerFetchBuffer.forward(Unknown Source)
com.microsoft.sqlserver.jdbc.ServerFetchBuffer.relative(Unknown Source)
com.microsoft.sqlserver.jdbc.PositionedCursor.positionedRelative(Unknown Source)
com.microsoft.sqlserver.jdbc.PositionedCursor.next(Unknown Source)
com.microsoft.sqlserver.jdbc.ForwardOnlyDynamicServerCursor.next(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(Unknown Source)
com.mchange.v2.c3p0.impl.NewProxyResultSet.next(NewProxyResultSet.java:2859)
org.hibernate.loader.Loader.doQuery(Loader.java:685)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
org.hibernate.loader.Loader.doList(Loader.java:2145)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
org.hibernate.loader.Loader.list(Loader.java:2024)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
cn.org.gddr.dao.impl.PageHibernateDaoSupport$2.doInHibernate(PageHibernateDaoSupport.java:65)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
cn.org.gddr.dao.impl.PageHibernateDaoSupport.findByPage(PageHibernateDaoSupport.java:56)
cn.org.gddr.dao.impl.FormDataInfoDaoImpl.findFormDataByFormId(FormDataInfoDaoImpl.java:120)
cn.org.gddr.service.impl.FormDataServiceImpl.getFormDataByFormId(FormDataServiceImpl.java:52)
sun.reflect.GeneratedMethodAccessor837.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
$Proxy29.getFormDataByFormId(Unknown Source)
cn.org.gddr.web.action.IndexAction.jcck(IndexAction.java:154)
sun.reflect.GeneratedMethodAccessor1047.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
org.apache.struts.actions.MappingDispatchAction.execute(MappingDispatchAction.java:169)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
cn.org.gddr.web.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:41)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter已经在连接字符串后边加上SelectMethod=cursor这是要在apache tomcat properties--->java设置max 和initial pool size这两个选项就可以了么?

解决方案 »

  1.   

    在tomcat启动的时候要设置虚拟机内存大小而已,而且你这里似乎也存在问题,为什么你用的内存会那么大?
      

  2.   

    ls说的是这里?
    ResultSet 大小:1,650,699。JVM 总内存大小:66,650,112
    JVM 总内存大是才64m
      

  3.   

    不过你这个好像不是虚拟内存超标,而是游标内存超标。
    我从没遇到过这个问题,不知道你的ResultSet里面放了多少数据。
    数据太多做分页好了。