Настройка JVM - это сочетание искусства и науки, и нет единого ответа для всех. Ситуация, которую вы видите, звучит так, как если бы GC по умолчанию делал «отметку сейчас, развертка позже», что может привести к паузам во время развертки. Один набор опций, которые вы можете попробовать:
JAVA_OPTS="-server -XX:-UseParallelGC -XX:-UseConcMarkSweepGC"
Эта комбинация опций в основном запускает другой поток (лунка 2) в фоновом режиме, который постоянно помечает и перемещает GC. Штраф, который вы платите, - это чуть больше использования ЦП, но в наши дни ЦП это едва заметно для большинства людей.
Вот все варианты: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
Вам действительно нужно прочитать столько статей о «настройке производительности java» через Google, сколько вам нужно найти, вам нужно профилировать свое приложение (многословный GC), чтобы узнать, что оно делает, чтобы получить правильное сочетание параметров с Java. Как и все остальное, просто слепое выбрасывание опций, не зная, что они делают, может привести к снижению производительности, а не к улучшению.