2012-02-14 119 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)