Ява из пространства кучи во время сериализации

Следующий код вызывает ошибку OutOfMemoryError: пространство кучи примерно для 3 миллионов строк. Память, выделенная JVM, составляет 4 Гб, используя 64-битную установку.

while (rs.next())
{

    ArrayList<String> arrayList = new ArrayList<String>();
    for (int i = 1; i <= columnCount; i++)
    {
        arrayList.add(rs.getString(i));
    }

    objOS.writeObject(arrayList);
}

Память, на которую ссылается ArrayList, имеет право на сбор мусора в каждой итерации цикла, а внутренний JVM вызывает сбор мусора (System.gc()) перед тем, как выбросить ошибку OutOfMemory Error из-за места кучи.

Так почему же происходит исключение?

19
задан Joachim Sauer 17 April 2013 в 09:02
поделиться