2012-02-14 151 views
0

使用ibatis运行spring批处理时,出现Java堆空间错误。Java堆空间错误

以下是堆栈跟踪。

 java.lang.OutOfMemoryError: Java heap space 
at oracle.sql.converter.CharacterConverter1Byte.toOracleStringWithReplacement(CharacterConverter1Byte.java:531) 
at oracle.sql.CharacterSetWithConverter.convertWithReplacement(CharacterSetWithConverter.java:200) 
at oracle.jdbc.driver.DBConversion.javaCharsToCHARBytes(DBConversion.java:770) 
at oracle.jdbc.driver.DBConversion.javaCharsToCHARBytes(DBConversion.java:711) 
at oracle.jdbc.driver.T4C8TTIClob.write(T4C8TTIClob.java:384) 
at oracle.jdbc.driver.T4CConnection.putChars(T4CConnection.java:2708) 
at oracle.sql.CLOB.putChars(CLOB.java:408) 
at oracle.jdbc.driver.OracleClobWriter.write(OracleClobWriter.java:111) 
at java.io.Writer.write(Unknown Source) 
at java.io.Writer.write(Unknown Source) 
at org.springframework.util.FileCopyUtils.copy(FileCopyUtils.java:220)  

任何想法是什么SQL转换器在做什么?

+0

它可能只是需要更多的内存。增加堆大小('-Xmx'标志),如果还没有完成。 – 2012-02-14 11:55:23

+0

看看这个http://stackoverflow.com/questions/3077154/ways-to-reduce-memory-churn – basav 2012-02-14 11:59:53

回答

0

另外,当您使用Oracle JDBC时,请确保您的结果集具有使用ResultSet.TYPE_FORWARD_ONLY - 如果您使用可滚动的ResultSets,则Oracle使用“客户端缓存”。 (http://docs.oracle.com/cd/B10500_01/java.920/a96654/resltset.htm)