Spring?Boot項(xiàng)目部署命令java?-jar的各種參數(shù)及作用詳解
前言
在實(shí)際生產(chǎn)環(huán)境中,我們經(jīng)常使用 java -jar
命令來部署 Spring Boot
項(xiàng)目。為了滿足不同場景的需求,可以通過一些常用參數(shù)來優(yōu)化運(yùn)行時(shí)行為和性能。本文將全面解析 java -jar
命令的各種參數(shù)及其作用,幫助你更好地管理和優(yōu)化 Spring Boo
t 項(xiàng)目的部署。
一、基礎(chǔ)命令結(jié)構(gòu)
java -jar [選項(xiàng)] 應(yīng)用程序名.jar
這里的 應(yīng)用程序名.jar 是你打包好的 Spring Boot 項(xiàng)目 JAR 文件,[選項(xiàng)] 是可選的 JVM 或應(yīng)用參數(shù)。
二、常見的 java 命令參數(shù)
以下是一些常見的 java
命令參數(shù)及其用途。
1. 設(shè)置內(nèi)存大小
java -Xms512m -Xmx1024m -jar 應(yīng)用程序名.jar
- -
Xms
:設(shè)置 JVM 啟動(dòng)時(shí)分配的最小堆內(nèi)存大小。例如-Xms512m
表示最小內(nèi)存為 512MB - -
Xmx
:設(shè)置 JVM 可使用的最大堆內(nèi)存大小。例如-Xmx1024m
表示最大內(nèi)存為 1024MB
2. 配置垃圾回收器
java -XX:+UseG1GC -jar 應(yīng)用程序名.jar
-XX:+UseG1GC
:使用 G1 垃圾回收器,適用于需要低延遲的場景。- 其他選項(xiàng):
-XX:+UseParallelGC
:使用并行垃圾回收器,適合高吞吐量的場景。- -
XX:+UseConcMarkSweepGC
:使用 CMS(Concurrent Mark-Sweep)垃圾回收器,適合響應(yīng)時(shí)間要求高的場景。
3. 配置線程棧大小
java -Xss512k -jar 應(yīng)用程序名.jar
- -
Xss
:設(shè)置每個(gè)線程的棧大小。默認(rèn)值通常為 1MB,設(shè)置較小的值可以支持更多線程,但可能增加棧溢出的風(fēng)險(xiǎn)。
4. 設(shè)置系統(tǒng)屬性
java -Dserver.port=8081 -Dspring.profiles.active=prod -jar 應(yīng)用程序名.jar
-Dkey=value
:設(shè)置系統(tǒng)屬性。例如:server.port
:修改 Spring Boot 應(yīng)用的默認(rèn)端口。spring.profiles.active
:指定運(yùn)行的配置文件(如prod
表示生產(chǎn)環(huán)境)。
5. 生成 GC 日志
java -Xlog:gc*:file=gc.log:time,uptime,level -jar 應(yīng)用程序名.jar
-Xlog:gc*
:開啟 GC 日志記錄。file=gc.log
:將日志輸出到指定文件。time,uptime,level
:記錄時(shí)間戳、運(yùn)行時(shí)間和日志級別等信息。
6. 遠(yuǎn)程調(diào)試
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar 應(yīng)用程序名.jar
-agentlib:jdwp
:啟用 Java 調(diào)試協(xié)議(JDWP)。transport=dt_socket
:使用套接字進(jìn)行通信。server=y
:啟用調(diào)試服務(wù)器。suspend=n
:應(yīng)用程序啟動(dòng)后不暫停。address=*:5005
:監(jiān)聽調(diào)試端口 5005。
三、Spring Boot 專用參數(shù)
Spring Boot 提供了一些特殊的運(yùn)行參數(shù),可以通過 --參數(shù)名=值
的形式傳遞。
1. 修改端口
java -jar 應(yīng)用程序名.jar --server.port=8081
--server.port
:修改 Spring Boot 默認(rèn)運(yùn)行端口。
2. 指定配置文件
java -jar 應(yīng)用程序名.jar --spring.config.location=/path/to/application.properties
--spring.config.location
:指定外部配置文件路徑。
3. 激活某個(gè) Profile
java -jar 應(yīng)用程序名.jar --spring.profiles.active=dev
--spring.profiles.active
:激活指定的配置文件(如 dev 表示開發(fā)環(huán)境)。
4. 配置日志文件路徑
java -jar 應(yīng)用程序名.jar --logging.file.name=/path/to/logfile.log
--logging.file.name
:指定日志文件位置。--logging.level.root=DEBUG
:設(shè)置全局日志級別。
5. 配置隨機(jī)端口
java -jar 應(yīng)用程序名.jar --server.port=0
--server.port=0
:讓應(yīng)用隨機(jī)選擇一個(gè)可用端口運(yùn)行。
四、綜合示例
以下是一個(gè)綜合示例,展示如何結(jié)合多種參數(shù)運(yùn)行 Spring Boot 應(yīng)用程序:
java -Xms512m -Xmx1024m -XX:+UseG1GC
-Dserver.port=8081 -Dspring.profiles.active=prod
-Xlog:gc*:file=gc.log:time,uptime,level
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
-jar 應(yīng)用程序名.jar --spring.config.location=/config/application.properties
五、參數(shù)優(yōu)化建議
1、根據(jù)硬件資源設(shè)置內(nèi)存大小:
小型應(yīng)用:
-Xms256m -Xmx512m
中型應(yīng)用:
-Xms512m -Xmx1024m
大型應(yīng)用:
-Xms1g -Xmx2g
2、選擇合適的垃圾回收器:
響應(yīng)時(shí)間優(yōu)先:使用 G1 垃圾回收器。
吞吐量優(yōu)先:使用 Parallel 垃圾回收器。
3、為生產(chǎn)環(huán)境啟用遠(yuǎn)程調(diào)試:
但需注意安全性,避免調(diào)試端口暴露。
4、外置配置文件:
將敏感配置(如數(shù)據(jù)庫連接信息)外置,避免硬編碼到應(yīng)用中。
總結(jié)
通過合理使用 java -jar 命令的各種參數(shù),可以有效提高 Spring Boot 項(xiàng)目的運(yùn)行效率和可維護(hù)性。在實(shí)際使用時(shí),需根據(jù)具體場景進(jìn)行調(diào)整,選擇最適合的配置。
相關(guān)文章
SpringBoot中注冊過濾器的幾種實(shí)現(xiàn)方式
本文主要介紹了SpringBoot中注冊過濾器的幾種實(shí)現(xiàn)方式,主要介紹了三種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01JavaSE實(shí)戰(zhàn)之酒店訂房系統(tǒng)的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何利用JavaSE實(shí)現(xiàn)酒店訂房系統(tǒng),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)JavaSE開發(fā)有一定的幫助,需要的可以參考一下2022-07-07Java中BigDecimal類與int、Integer使用總結(jié)
這篇文章主要給大家介紹了關(guān)于Java中BigDecimal類與int、Integer使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07解決java.lang.IllegalStateException:Duplicate key異常問題
java.lang.IllegalStateException:Duplicatekey異常在將List轉(zhuǎn)換為Map時(shí)出現(xiàn),解決方法是使用toMap()的重載方法,如果已經(jīng)存在則不再修改,直接使用上一個(gè)數(shù)據(jù)2025-03-03