EhCache — изменяемые элементы — используется слишком много памятиJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 EhCache — изменяемые элементы — используется слишком много памяти

Сообщение Anonymous »

Я использую ehcache для обработки больших файлов и избегаю OOM путем переполнения на диск.
У меня есть файл с 1 миллионом строк. В каждой строке может быть общее слово с другими, и мне нужно сгруппировать их по определенным словам.
Поэтому для этого я перебираю каждую строку и добавляю элемент в кеш.

Element("key=word",value=ArrayList(строка, содержащая слово)).

Если текущая строка содержит одно из этих ключевых слов, на каждой итерации я получаю элемент из кеша, добавляю строку в этот ArrayList и снова помещаю элемент в кеш, то есть в конце итерация, которую я мог бы иметь в кеше, как показано ниже:

Element("key=word1",value=ArrayList(строка 1, содержащая слово1, строка 2 содержащий слово1).

Element("key=word2",value=ArrayList(строка 1 содержит слово2, строка 2 содержит слово2, строка 3 содержит слово2).

.....

Element("key=wordn",value=ArrayList(строка 1 содержит слово n, строка 2 содержит слово n...строка n содержит слово n).

Но это требует много памяти и выполняется много вызовов GC, что приводит к огромному времени обработки (часы).
Я использую стратегию сохранения LOCALTEMPSWAP для переполнения на диск при достижении порога памяти, но она переполняется при каждом вызове put.
Я читал в документации, что когда вы работаете с изменяемыми объектами, если вы установите copyOnRead=false, вам не нужно вносить изменения при изменении изменяемого объекта, в моем случае изменяемым объектом является ArrayList. Если я просто добавляю массив, не выполняя put для этого элемента, он терпит неудачу из-за нехватки памяти, потому что расчет put и памяти выполняется только тогда, когда я добавляю первый элемент, специфичный для слова. (Если у меня 12 слов и 1 миллион строк, put будет вызываться только 12 раз.)
https://www.ehcache.org/documentation/2.8/get -started/consistency-options.html#propagation-of-modified-data
Есть идеи, как можно повысить производительность?
Спасибо
p>
Мне нужно найти способ сделать это за считанные минуты и избежать ООМ.

Подробнее здесь: https://stackoverflow.com/questions/785 ... emory-used
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как удалить просроченные элементы из ehcache без десериализации
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Почему в Project Valhalla не представлены изменяемые структуры?
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как использовать изменяемые данные в будущем флаттере?
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как использовать изменяемые данные в будущем флаттере?
    Anonymous » » в форуме Android
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как аннотировать изменяемые структуры для mypy
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»