Problema com OutOfMemory

boa tarde a todos
eu tenho um metodo que executa um batch
e neste batch esta dando outofmemory

me lembro que tinha visto em algum lugar que isto pode ser resolvido para fazer swap em disco quando acontecer este problema…

se alguem poder me ajudar eu agradeco desde ja…

segue abaixo o meu metodo:
o erro da no stmt.addBatch();

[code] public void InsereLista(List lista) throws SQLException {
StringBuilder sb = new StringBuilder();
sb.append(“insert into PdvPrc”);
sb.append("(P15CodReduz,P15Descricao,P15Descricao35,");
sb.append(“P15Ean,P15Secao,P15Natureza,”);
sb.append(“P15AliqIcm,P15Fracao,P15Pesado,”);
sb.append(“P15Associado,P15DescMax,P15Preco,”);
sb.append(“P15Conjunto,P15PrecoFixo,P15Preco2,”);
sb.append(“P15Preco3,P15Vasilhame,P15IcmReduz,”);
sb.append(“P15IsenPis,P15TipVen,P15EmbVen,”);
sb.append(“P15Arred,P15ProdProp,P15Oferta,”);
sb.append(“P15Estq,P15Nbm)”);
sb.append(" values (?,?,?,?,?,?,?,?,?,?,");
sb.append("?,?,?,?,?,?,?,?,?,?,");
sb.append("?,?,?,?,?,?)");
PreparedStatement stmt = this.con.prepareStatement(sb.toString());

    for (PdvPrc pdvprc : lista) {
        stmt.setLong(1, pdvprc.getP15CodReduz());
        stmt.setString(2, pdvprc.getP15Descricao());
        stmt.setString(3, pdvprc.getP15Descricao35());
        stmt.setLong(4, pdvprc.getP15Ean());
        stmt.setLong(5, pdvprc.getP15Secao());
        stmt.setString(6, pdvprc.getP15Natureza());
        stmt.setDouble(7, pdvprc.getP15AliqIcm());
        stmt.setString(8, pdvprc.getP15Fracao());
        stmt.setString(9, pdvprc.getP15Pesado());
        stmt.setLong(10, pdvprc.getP15Associado());
        stmt.setLong(11, pdvprc.getP15DescMax());
        stmt.setDouble(12, pdvprc.getP15Preco());
        stmt.setString(13, pdvprc.getP15Conjunto());
        stmt.setString(14, pdvprc.getP15PrecoFixo());
        stmt.setDouble(15, pdvprc.getP15Preco2());
        stmt.setDouble(16, pdvprc.getP15Preco3());
        stmt.setString(17, pdvprc.getP15Vasilhame());
        stmt.setDouble(18, pdvprc.getP15IcmReduz());
        stmt.setString(19, pdvprc.getP15IsenPis());
        stmt.setString(20, pdvprc.getP15TipVen());
        stmt.setLong(21, pdvprc.getP15EmbVen());
        stmt.setString(22, pdvprc.getP15Arred());
        stmt.setString(23, pdvprc.getP15ProdProp());
        stmt.setString(24, pdvprc.getP15Oferta());
        stmt.setDouble(25, pdvprc.getP15Estq());
        stmt.setLong(26, pdvprc.getP15Nbm());
        stmt.addBatch();
    }
    stmt.executeBatch();
    stmt.close();[/code]

Sei que nao é o adequado mas se inserir diretamente linha a linha no banco dentro de uma transacao nao te salva desse problema?

javaflex, eu consegui resolver esse problema,
salvando de 100 em 100…

foi a unica maneira…
mas eu vi em algum lugar, que tem como configurar
nao se se a classe ou coisa assim, para que
seja feito swap em disco quando isso ocorrer…