后台报错,我走断点跟着发现是我在执行一个SQL查询的时候报的错:
<select id="selectTdSSeqctrl" parameterClass="TdSSeqctrl" resultMap="TdSSeqctrlResult">
SELECT * FROM TD_S_SEQCTRL
<include refid="where-all-condition"/>
</select>
查询结果又两万多条。我电脑myeclipse.ini,myeclipse的jdk,tomcat都更改过了内存的设置,
我tomcat,jdk已设置了-Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=256m -Doracle.jdbc.V8Compatible=true
依然没有效果。还请各位大神帮忙看看原因,报错内容如下:
07-07 14:56:59 ERROR sitech.jcf.proxy.Impl.AllBeanProxy:71 - java.lang.OutOfMemoryError: Java heap space
at oracle.jdbc.driver.CharCommonAccessor.getString(CharCommonAccessor.java:404)
at oracle.jdbc.driver.T4CVarcharAccessor.getString(T4CVarcharAccessor.java:436)
at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:971)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:494)
at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:224)
at com.ibatis.sqlmap.engine.type.StringTypeHandler.getResult(StringTypeHandler.java:35)
at com.ibatis.sqlmap.engine.mapping.result.ResultMap.getPrimitiveResultMappingValue(ResultMap.java:619)
at com.ibatis.sqlmap.engine.mapping.result.ResultMap.getResults(ResultMap.java:345)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.java:419)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(SqlExecutor.java:336)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.iBatisExecuteQuery(SqlExecutor.java:224)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:186)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteQuery(MappedStatement.java:222)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:190)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForList(MappedStatement.java:139)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:567)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:295)
at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:1)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:200)
at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:293)
at com.sitech.jcf.core.dao.BaseDao.queryForList(BaseDao.java:295)
at com.sitech.groupcust.common.dao.TdSSeqctrlDao.queryList(TdSSeqctrlDao.java:24)
at com.sitech.groupcust.busi.other.SeqctrlServiceImpl.selectCrmSeq(SeqctrlServiceImpl.java:99)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

解决方案 »

  1.   

    我的代码和同事一样的,同事的能运行没问题,而我的有问题,所有应该不可能是代码的问题。
    会是查询时间过长,导致的吗? 我现在刚刚修改了sqlMapConfig.xml设置defaultStatementTimeout="900" 超时为900s,试一下,稍后看看能不能成功。
      

  2.   

    设置defaultStatementTimeout="900"了之后也不管用。
    补充一下报错内容
    Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: Java heap space
    at org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:154)
    at org.apache.juli.logging.DirectJDKLog.error(DirectJDKLog.java:135)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1655)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
    at java.lang.Thread.run(Thread.java:619)我本地已修改catalina.bat 增加了
    JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 
    -server -Xms1536m -Xmx1536m
    -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m 
    -XX:MaxPermSize=256m -XX:+DisableExplicitGC"catalina.sh增加了JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m"之后仍然报错。
    坐等回复!
      

  3.   

    在启动项目的时候发现了一个在执行的process
      

  4.   

    你java程序的内存配置太小了
    加大!
      

  5.   

    你好,我的.ini文件 myeclipse的tomcat和jdk都更改过了,Xmx=1024m
    XX:MaxPermSize=512
    应该够用了。还需要改大吗?有没有其他的需要修改的?