2

Java ヒープ領域エラーが発生しましたが、データベースにレコードを挿入しようとしています。オラクルがヒープを消費できる理由と、なぜこれほど消費しているのかはわかりません。エラーは次の行で発生しています。

 Connection con       = null;
    PreparedStatement ps = null;
    ResultSet rs         = null;
    String sqlString     = null;
    DaoUtility dUtil     = DaoUtility.getInstance();

    try
    {
      con = dUtil.getConnection();
      . . .
      dUtil.executeUpdate(ps);

ログは次のとおりです。

java.lang.OutOfMemoryError: oracle.jdbc.driver.BufferCache.get の java.lang.reflect.Array.newInstance(Array.java:52) の java.lang.reflect.Array.newArray(Native Method) の Java ヒープ領域(BufferCache.java:226) at oracle.jdbc.driver.PhysicalConnection.getCharBuffer(PhysicalConnection.java:7643) at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2949) at oracle.jdbc.driver.OraclePreparedStatement. oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3571) の processCompletedBindRow(OraclePreparedStatement.java:2355) oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657) で.executeUpdate(OraclePreparedStatementWrapper.java:1350) at weblogic.jdbc.wrapper.PreparedStatement.executeUpdate(PreparedStatement.java:172)

4

3 に答える 3

1

Oracle JDBC ドライバーはメモリ消費量が多いことで有名です。メモリ消費を制御するために使用できる構成パラメータについてお読みください。特にoracle.jdbc.maxCachedBufferSizeあなたの場合は注意してください。

于 2013-04-15T09:39:36.793 に答える