Это помогло мне избавиться от этой ошибки. Этот параметр отключает -XX: + DisableExplicitGC
учаю эту ошибку в программе, которая создает несколько (сотни тысяч) объектов HashMap с несколькими (15-20) текстовыми записями каждый. Эти строки должны быть собраны (без разбивки на меньшие суммы) перед отправкой в базу данных.
Согласно Sun, ошибка возникает «если слишком много времени тратится на сборку мусора: если на сборку мусора тратится более 98% общего времени и восстанавливается менее 2% кучи, генерируется ошибка OutOfMemoryError. ».
По-видимому, можно использовать командную строку для передачи аргументов в JVM для
Увеличение размера кучи через «-Xmx1024m» (или более) илиОтключение проверки ошибок в целом через -XX: -UseGCOverheadLimit.Первый подход работает отлично, второй заканчивается в другом java.lang.OutOfMemoryError, на этот раз о куче.
Итак, вопрос: есть ли программная альтернатива этому для конкретного варианта использования (то есть, несколько небольших объектов HashMap)? Например, если я использую метод clear () HashMap, проблема исчезнет, но и данные, хранящиеся в HashMap! :-)
Эта проблема также обсуждается всвязанная тема в StackOverflow.