Вы должны включить ведение журнала GC и проверить, где происходит OOM.
-verbose:gc
-Xloggc:gc.log
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
Возможно, вы испытываете ограничения по пермскому пространству, отрегулируйте с помощью -XX:MaxPermSize=YYYm
В любом случае, чтобы ответить на ваш вопрос, я начинаю с минимумов и устанавливаю максимум относительно высоким. Затем я строю график журнала gc и выясняю, где находится мое состояние; визуально выберите размер выше среднего для разных поколений. Прочитайте его, как финансовую диаграмму, вы захотите увидеть хороший разброс в новых поколениях и последовательный рост и сбор в постоянном поколении. Как уже упоминалось, также нанесите на график ваше пространство для перми, чтобы убедиться, что вы не постоянно увеличиваете.
GC-тюнинг - это искусство, никак не наука.