Я пытаюсь развернуть веб-приложение на основе Spring Boot в производство. Приложение построено с использованием Spring Boot 1.0.1 и имеет встроенный Tomcat 7 в качестве сервера приложений. Я хочу выделить больше памяти приложению при запуске приложения с java -jar myapp.jar командной строки java -jar myapp.jar. 
 Должен ли я использовать параметр JVM, такой как -Xms -Xmx или использовать переменную среды, такую как JAVA_OPTS? Я попытался найти ответ в документации или Google, но не получил ответ. Кто-нибудь может дать несколько советов?
Как настроить размер кучи при запуске приложения Spring Boot со встроенным tomcat?
Ответ 1
Просто используйте любой обычный механизм, который вы хотели бы настроить JVM. Документы доступны в командной строке:
$ java -X
...
-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size
...
Ответ 2
 Если запускать приложение с помощью плагина spring-boot:
mvn spring-boot:run -Drun.jvmArguments="-Xmx512m" -Drun.profiles=dev
 В противном случае, если работает java -jar:
java -Xmx512m -Dspring.profiles.active=dev -jar app.jar
Ответ 3
Так как это специально вопрос Spring Boot, я бы сказал, что более полезным ответом, чем @DaveSyer, является следующее:
Вы можете удалить файл .conf в том же каталоге, что и WAR, который фактически является оболочкой script.
например.
$ ls
myapp.conf
myapp.war
$ cat myapp.conf
export JAVA_OPTS="-Xmx1024m -Xms256m"
Любая конфигурация, которую вы там делаете, будет запущена до запуска Spring загрузочного Tomcat. Лично я контролирую версию файла .conf.example в самом приложении, а затем отбрасываю его на каждом сервере, на котором я развертываю.
Конечно, все, что вы установили в этом файле .conf, переопределяется с помощью операций с командной строкой.
Ответ 4
 Для Spring Boot 2 вы должны указать размер кучи в pom.xml как pom.xml ниже:
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <jvmArguments>-Xmx64m</jvmArguments>
            </configuration>
        </plugin>
Ответ 5
 Для Spring Boot 1 аргумент Maven, который нужно указать в конфигурации плагина, - это jvmArguments а пользовательское свойство -  run.jvmArguments:
mvn spring-boot:run -Drun.jvmArguments="-Xms2048m -Xmx4096m"
 Для Spring Boot 2 аргумент Maven, который нужно указать в конфигурации плагина, также является jvmArguments но свойство пользователя теперь имеет значение  spring-boot.run.jvmArguments:
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xms2048m -Xmx4096m"
Так что если вы используете способ настройки плагина, то для Spring Boot 1 и 2 вы можете сделать это:
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <jvmArguments>              
            -Xms4048m
            -Xmx8096m
        </jvmArguments>
    </configuration>
</plugin>
