Idea為java程序添加啟動參數(shù)(含:VM?options、Program?arguments、Environment?variable)
一、運行Java程序
我們運行Java程序的時候,一般可以通過下列方式:
運行某個Class類(class表示的是包含main函數(shù)的class名稱(含包名))
java [options] class [arguments]
運行某個jar包(jar和xxx.jar配對使用,-jar指示用jar方式啟動,而xxx.jar表示的時jar文件的名稱)
java [options] -jar xxx.jar [arguments]
其中[options]表示Java運行環(huán)境的可選配置信息,其會影響到j(luò)ava運行環(huán)境,是性能調(diào)優(yōu)的關(guān)鍵所在,并且可以傳多個選擇項。
[arguments]表示的是程序自身的參數(shù),會被傳到main函數(shù)的參數(shù)數(shù)組里面,為程序自己所使用。
1、Java啟動命令可選項(options)
Java啟動命令可選項(options)大致可分為標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)兩種,非標(biāo)準(zhǔn)的可選項不保證在所有平臺上都實現(xiàn),并且在未來的某個版本中可能會被修改且不告知,相對而言比較不穩(wěn)定(Unstable)。
從具體使用上而言可以分為三種,分別為:標(biāo)準(zhǔn)可選項(Standard options)、非標(biāo)準(zhǔn)可選項(Nonstandard Options) 和 不穩(wěn)定(Unstable)的選項。
1)Standard Options
標(biāo)準(zhǔn)可選項常用的為-Dkey=value,通過其可以設(shè)定系統(tǒng)屬性值,比如編碼-Dfile.encoding=UTF-8??梢酝ㄟ^System.getProperty("keyname")來獲取系統(tǒng)屬性的值。
詳細(xì)可以參考博文:Java程序啟動時-D指定參數(shù)詳解
2)Nonstandard Options
非標(biāo)準(zhǔn)可選項都以 -X 開始,常見于JVM調(diào)優(yōu)配置,比如:
- -Xms<size>
設(shè)置Java堆的初始化大小。例如 -Xms1024m,Java堆的初始化大小就設(shè)置為1G。 - -Xmx<size>
設(shè)置Java堆的最大值。例如 -Xmx3072m,Java堆的最大值就設(shè)置為3G。 - -Xss<size>
設(shè)置Java線程棧的值。例如 -Xss128m,Java線程棧的值就設(shè)置為128兆。 - ..........
3)Unstable Options
不穩(wěn)定的選項也是非標(biāo)準(zhǔn)的,其相當(dāng)于非標(biāo)準(zhǔn)可選項的一個子集,都以-XX開頭;同樣常見于JVM調(diào)優(yōu)配置,比如:
-XX:+UseG1GC使用G1垃圾回收器。-XX:+PrintGCDetailsGC日志中輸入垃圾回收的詳細(xì)信息。-XX:OnOutOfMemoryErrorOOM時輸出dump文件。..........
2、程序參數(shù)(arguments)
class或者jar文件之后的字符串(--k=v)會傳到 main 函數(shù)的 String[] 類型的 args 參數(shù),多個參數(shù)用空格隔開;
如果某一個參數(shù)包含多個單詞,那么需要用引號包起來;
比如:
java -jar test-0.0.1-SNAPSHOT.jar --server.port=8099
效果圖:

二、添加啟動參數(shù)的步驟
1、打開需要添加啟動參數(shù)的對話框

2、配置啟動參數(shù)

系統(tǒng)環(huán)境變量不能直接以空格分隔,要點擊最右側(cè)的圖標(biāo),進(jìn)入設(shè)置:

其實就是,系統(tǒng)環(huán)境變量之間要以;分隔
三、啟動參數(shù)示例解析
在Run/Debug Configurations頁面主動有三個內(nèi)容需要被關(guān)注:VM options、Program arguments、Environment variable。
1> VM options
設(shè)置JVM參數(shù) 或 系統(tǒng)屬性,需要以 -D 或 -X 或 -XX 開頭,每個參數(shù)使用空格隔開;2> Program arguments
設(shè)置運行參數(shù),以--k=v的方式設(shè)置一個參數(shù),每個參數(shù)需要以空格隔開;3> Environment variable
設(shè)置環(huán)境變量,多個以;分隔;
0、樣例
結(jié)合上圖的應(yīng)用啟動參數(shù)設(shè)置,在main函數(shù)中輸入如下內(nèi)容:
@SpringBootApplication
public class StartApplication {
public static void main(String[] args) {
SpringApplication.run(StartApplication.class, args);
// todo 下面的內(nèi)容放在SpringApplication.run()前后都可以
//打印傳進(jìn)來的 program arguments
for (String arg : args) {
System.out.println(arg);
}
System.out.println("---------------");
final String myEnv = System.getProperty("myEnv");
System.out.println("System.getenv(\"myEnv\") = " + myEnv);
System.out.println("---------------");
final String myEnv2 = System.getenv("myEnv");
System.out.println("System.getenv(\"myEnv\") = " + myEnv2);
System.out.println("---------------");
final String myProp = System.getenv("myProp");
System.out.println("System.getenv(\"myProp\") = " + myProp);
}
}
運行結(jié)果如下:

1、VM options
針對VM options中通過-D設(shè)置的系統(tǒng)屬性值,可以在代碼中通過System.getProperty(String key)方法獲??;如上述代碼中的:
final String myEnv = System.getProperty("myEnv");此外:System#getProperty() 方法返回所有系統(tǒng)屬性值;
2、Environment variable
針對Environment variable中設(shè)置的系統(tǒng)環(huán)境變量值,可以在代碼中通過System.getEnv(String key)方法獲??;如上述代碼中的:
final String myEnv2 = System.getenv("myEnv");此外:System#getenv() 方法返回所有系統(tǒng)環(huán)境變量值;
總結(jié)
到此這篇關(guān)于Idea為java程序添加啟動參數(shù)(含:VM options、Program arguments、Environment variable)的文章就介紹到這了,更多相關(guān)Idea java程序添加啟動參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JDK動態(tài)代理提高代碼可維護(hù)性和復(fù)用性利器
這篇文章主要為大家介紹了JDK動態(tài)代理提高代碼可維護(hù)性和復(fù)用性利器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Mybatis-Plus多表關(guān)聯(lián)查詢的使用案例解析
這篇文章主要介紹了Mybatis-Plus多表關(guān)聯(lián)查詢的使用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
Java畢業(yè)設(shè)計實戰(zhàn)之藥店信息管理系統(tǒng)的實現(xiàn)
這是一個使用了java+SSM+JSP+layui+maven+mysql開發(fā)的藥店信息管理系統(tǒng),是一個畢業(yè)設(shè)計的實戰(zhàn)練習(xí),具有藥店信息管理該有的所有功能,感興趣的朋友快來看看吧2022-01-01
Java DefaultListableBeanFactory接口超詳細(xì)介紹
這篇文章主要介紹了Java DefaultListableBeanFactory接口,DefaultListableBeanFactory是整個bean加載的核心部分,是Spring注冊機加載bean的默認(rèn)實現(xiàn)2022-11-11
如何解決websocket開啟多個頁面訪問同一個連接會失效的問題
使用WebSocket時,若多個頁面訪問同一個WebSocket連接可能會導(dǎo)致連接失效,遇到這個問題時,可以通過在SpringBoot中使用@ServerEndpoint注解并添加@Component來解決,出現(xiàn)連接錯誤通常是因為WebSocket連接接收到的是一個GET請求2024-09-09
windows11下jdk同時安裝多個版本并自由切換全網(wǎng)最詳細(xì)教程
一臺電腦可以同時安裝多個版本jdk,建議兩個,最多不超三個,安裝多個JDK版本可能會占用較多的磁盤空間,這篇文章主要介紹了windows11下jdk同時安裝多個版本并自由切換的相關(guān)資料,需要的朋友可以參考下2025-11-11

