Это помогло мне избавиться от этой ошибки. Этот параметр отключает -XX: + DisableExplicitGC

учаю эту ошибку в программе, которая создает несколько (сотни тысяч) объектов HashMap с несколькими (15-20) текстовыми записями каждый. Эти строки должны быть собраны (без разбивки на меньшие суммы) перед отправкой в ​​базу данных.

Согласно Sun, ошибка возникает «если слишком много времени тратится на сборку мусора: если на сборку мусора тратится более 98% общего времени и восстанавливается менее 2% кучи, генерируется ошибка OutOfMemoryError. ».

По-видимому, можно использовать командную строку для передачи аргументов в JVM для

Увеличение размера кучи через «-Xmx1024m» (или более) илиОтключение проверки ошибок в целом через -XX: -UseGCOverheadLimit.

Первый подход работает отлично, второй заканчивается в другом java.lang.OutOfMemoryError, на этот раз о куче.

Итак, вопрос: есть ли программная альтернатива этому для конкретного варианта использования (то есть, несколько небольших объектов HashMap)? Например, если я использую метод clear () HashMap, проблема исчезнет, ​​но и данные, хранящиеся в HashMap! :-)

Эта проблема также обсуждается всвязанная тема в StackOverflow.

Ответы на вопрос(16)

Ваш ответ на вопрос