來自知乎:https://www.zhihu.com/question/65886877
spring boot使用內嵌tomcat,怎么配置內置tomcat的內存?
spring boot使用內嵌tomcat,怎么配置內置tomcat的內存?使用外部,只要在catalina.sh配置下就行了,那內置的怎么操作呢?
答案:
springboot只是內嵌了tomcat而已, 所以使用的內存其實就是springboot這個進程的內存,所以可以通過啟動命令的時候 增加 -Xmx -Xms 這類的參數來設置內存的大小。
tomcat是沒有單獨配置內存大小一說的, 你說的之前的catalina.sh里面設置的內存大小其實也只是針對這個啟動進程進行配置。
另外一些tomcat的配置可以在server.tomcat下面進行配置,主要是配置tomcat容器的最大連接數這類的參數。
具體操作為:
要加“m”說明是MB,否則就是KB了.
-Xms:初始值
-Xmx:最大值
-Xmn:最小值
java -Xms10m -Xmx80m -jar mod.jar & 時區設置 java -jar -Duser.timezone=GMT+08
mod.jar &
使用配置文件:(來自csdn:http://blog.csdn.net/rickiyeat/article/details/70213340)
與Spring Boot項目同路徑下新建一同名配置文件
項目為boot.jar,新建文件boot.conf,項目啟動之后默認讀取該配置文件
1、jvm運行參數
JAVA_OPTS="-Xms2048m -Xmx2048m -Xss512k"
-Xms:初始Heap大小,使用的最小內存,cpu性能高時此值應設的大一些 -Xmx:Java heap最大值,使用的最大內存 上面兩個值是分配JVM的最小和最大內存,取決於硬件物理內存的大小,建議均設為物理內存的一半。 -XX:PermSize:設定內存的永久保存區域 -XX:MaxPermSize:設定最大內存的永久保存區域 -XX:MaxNewSize: -Xss 15120 這使得JBoss每增加一個線程(thread)就會立即消耗15M內存,而最佳值應該是128K,默認值好像是512k. +XX:AggressiveHeap 會使得 Xms沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。 -Xss:每個線程的Stack大小 -verbose:gc 現實垃圾收集信息 -Xloggc:gc.log 指定垃圾收集日志文件 -Xmn:young generation的heap大小,一般設置為Xmx的3、4分之一 -XX:+UseParNewGC :縮短minor收集的時間 -XX:+UseConcMarkSweepGC :縮短major收集的時間 提示:此選項在Heap Size 比較大而且Major收集時間較長的情況下使用更合適。
2、項目運行參數
RUN_ARGS="--server.port=8081 --logging.level=INFO --spring.thymeleaf.cache=true --logging.file=/var/log/demo.lo
