Java из кучи во время сериализации

Следующий код вызывает ошибку OutOfMemmityError: кучное пространство для примерно 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, подходит для сбора мусора в каждой итерации цикла while, и внутренне JVM вызывает сбор мусора ( System.gc () ) перед отправкой ошибки OutOfMemory из-за космоса.

Почему возникает исключение?

-121--902366- Что можно использовать с веб-работниками? У меня есть несколько вопросов о веб-работниках Имеет ли работник доступ к месту хранения? Например, indexedDB/webSQL и локальное место хранения файла, из которого был инициирован работник? Как я могу включить файл в...

У меня есть несколько вопросов о веб-работниках

  • Имеет ли работник доступ к месту хранения? Например, indexedDB/webSQL и локальное место хранения файла, из которого был инициирован работник?

  • Как включить файл в работник? У меня есть functions.js , который имеет множество быстрых функций, связанных с приложениями, и действительно нет смысла копировать содержимое файла в работника, чтобы иметь два разных места для обновления моих функций.

  • Можно ли использовать DOM внутри рабочего объекта? Можно ли загрузить аудиофайл в теге temp audio, чтобы прочитать его продолжительность, а также если он воспроизводим или нет, не обращаться к dom родительской страницы, но иметь DOM в самом рабочем объекте.

  • Если ответ на какой-либо вопрос отрицательный, то как это можно или нужно сделать вручную?

Это приложение для chrome, поэтому у меня есть доступ к последним интерфейсам Chrome API, и мне не нужно заботиться о обратной совместимости.

18
задан Achshar 31 August 2013 в 16:01
поделиться