Следующий код вызывает ошибку 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 и локальное место хранения файла, из которого был инициирован работник?
Как включить файл в работник? У меня есть functions.js
, который имеет множество быстрых функций, связанных с приложениями, и действительно нет смысла копировать содержимое файла в работника, чтобы иметь два разных места для обновления моих функций.
Можно ли использовать DOM внутри рабочего объекта? Можно ли загрузить аудиофайл в теге temp audio, чтобы прочитать его продолжительность, а также если он воспроизводим или нет, не обращаться к dom родительской страницы, но иметь DOM в самом рабочем объекте.
Если ответ на какой-либо вопрос отрицательный, то как это можно или нужно сделать вручную?
Это приложение для chrome, поэтому у меня есть доступ к последним интерфейсам Chrome API, и мне не нужно заботиться о обратной совместимости.