Мои настройки JAVA_OPTS в порядке?

#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 и все равно забудьте оставшиеся).