#java #garbage-collection #java-opts
#java #сбор мусора #java-opts
Вопрос:
Я настраиваю свое приложение JVM. JAVA_OPTS, который я установил, выглядит следующим образом:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
JAVA_OPTS="$JAVA_OPTS -server"
JAVA_OPTS="$JAVA_OPTS -Xms2048m"
JAVA_OPTS="$JAVA_OPTS -Xmx2048m"
JAVA_OPTS="$JAVA_OPTS -XX:NewSize=256m"
JAVA_OPTS="$JAVA_OPTS -XX:MaxNewSize=256m"
JAVA_OPTS="$JAVA_OPTS -XX:PermSize=256m"
JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=256m"
Я примерно понял о поколениях. Но я не уверен, что моя настройка подходит.
Насколько я понял, размер нового поколения равен 256, и поэтому остается (1792m) размер старого поколения (потому что поколение Perm не является кучей).
Я прав? И подходит ли моя настройка?
Ответ №1:
Оптимальными настройками для обычного Java-приложения являются
JAVA_OPTS=""
Или почему авторы Java должны указывать значения по умолчанию, которые все будут менять.
Не зная ничего о вашем приложении и доступной памяти, нет смысла менять значения по умолчанию.
На самом деле, -Dfile.encoding=UTF-8
может иметь смысл, если вы хотите использовать UTF-8 в системе, использующей что-то другое по умолчанию (но смена ОС была бы лучше). Забудьте о других, если вы не знаете, сколько памяти вам понадобится (а затем используйте -Xmx
и все равно забудьте оставшиеся).