Spring boot 在使用嵌入式Tomcat启动Spring引导应用程序时,如何配置堆大小?
我正在尝试将一个功能强大的web应用程序部署到生产环境中。该应用程序是用SpringBoot1.0.1构建的,默认的Tomcat7嵌入为应用服务器。当使用Spring boot 在使用嵌入式Tomcat启动Spring引导应用程序时,如何配置堆大小?,spring-boot,heap-memory,Spring Boot,Heap Memory,我正在尝试将一个功能强大的web应用程序部署到生产环境中。该应用程序是用SpringBoot1.0.1构建的,默认的Tomcat7嵌入为应用服务器。当使用java-jar myapp.jar命令行启动应用程序时,我想为应用程序分配更大的内存 我应该使用参数如-Xms-Xmx还是使用环境变量如JAVA\u OPTS?我曾试图在文档或谷歌上寻找答案,但没有得到答案。有人能给点提示吗?只要使用任何正常的机制来设置JVM就行了。命令行上提供了文档: $ java -X ... -Xms<size&
java-jar myapp.jar
命令行启动应用程序时,我想为应用程序分配更大的内存
我应该使用参数如
-Xms-Xmx
还是使用环境变量如JAVA\u OPTS
?我曾试图在文档或谷歌上寻找答案,但没有得到答案。有人能给点提示吗?只要使用任何正常的机制来设置JVM就行了。命令行上提供了文档:
$ java -X
...
-Xms<size> Set initial Java heap size
-Xmx<size> Set maximum Java heap size
...
$java-X
...
-Xms设置初始Java堆大小
-Xmx设置最大Java堆大小
...
由于这是一个专门针对Spring Boot的问题,我认为比@DaveSyer更有用的答案是:
您可以将.conf
文件放在与您的文件相同的目录中,该文件实际上是一个shell脚本
比如说,
$ ls
myapp.conf
myapp.war
$ cat myapp.conf
export JAVA_OPTS="-Xmx1024m -Xms256m"
您在那里执行的任何配置都将在Spring Boot embedded Tomcat启动之前运行。就我个人而言,我在应用程序本身中控制一个.conf.example
文件的版本,然后在部署到的每台服务器上放置它的副本
当然,您在
.conf
文件中设置的任何内容都可以通过命令行操作覆盖。如果使用以下命令启动应用程序:
否则,如果:
对于Spring Boot 2,您必须在
pom.xml
文件中指定堆大小,如下所示:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>-Xmx64m</jvmArguments>
</configuration>
</plugin>
org.springframework.boot
springbootmaven插件
-Xmx64m
对于Spring Boot 1,要在插件配置中指定的Maven参数是JVM参数
,用户属性是:
对于Spring Boot 2,要在插件配置中指定的Maven参数也是JVM参数
,但用户属性现在是:
因此,如果您使用插件配置方式,对于Spring Boot 1和2,您都可以这样做:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xms4048m
-Xmx8096m
</jvmArguments>
</configuration>
</plugin>
org.springframework.boot
springbootmaven插件
-Xms4048m
-Xmx8096m
这太漂亮了。它也适用于.jar文件。我想知道哪个版本可用?我尝试使用spring boot 1.5.9,但它没有在名为jar文件的.conf文件中选择conf:export JAVA_OPTS=“JAVA.net.preferIPv4Stack=true”。使用nohup使用java-jar执行。这似乎不适用于SpringBoot2.0.0.M6。指定它应该工作,但它不工作。我看到了两个选项,要么将配置指定到pom.xml中(有效),要么将Spring Boot Maven插件的版本指定为1.5.9-RELEASE(也有效)。对于一个版本来说,它是有效的,而对于2.0.3.0版本来说,它不是。张巴斯的答案中的解决方案是有效的。那么,我可以将它增加到比正常情况更多的程度吗(比如10倍)?应用程序、JVM或计算机的开销是多少?属性spring-boot.run.JVM参数有效。谢谢
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>-Xmx64m</jvmArguments>
</configuration>
</plugin>
mvn spring-boot:run -Drun.jvmArguments="-Xms2048m -Xmx4096m"
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xms2048m -Xmx4096m"
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xms4048m
-Xmx8096m
</jvmArguments>
</configuration>
</plugin>