Java啓動配置詳解

這是我參與8月更文挑戰的第6天,活動詳情查看:8月更文挑戰java

對於這個面板,你們都很是熟悉了吧。這是Java程序啓動時配置相關參數的面板。今天咱們聊聊啓動時主要配置的三個參數:VM options、Program arguments、Environment variables。spring

image.png

VM options 虛擬機選項

VM options,爲虛擬機選項。markdown

其大體可分爲三種:jvm

  • 標準參數(-),全部的JVM實現都必須實現這些參數的功能,並且向後兼容;

咱們能夠在控制檯直接輸入:java命令查看全部的標準參數post

image.png

最經常使用的 -D<名稱>=<值>這個選項,這個選項是設置系統屬性。如測試

-Dspring.profiles.active=dev
複製代碼

設置的系統屬性,咱們能夠經過System.getProperty()得到spa

image.png

image.png

  • 非標準參數(-X),默認jvm實現這些參數的功能,可是並不保證全部jvm實現都知足,且不保證向後兼容;

在控制檯輸入java -X可查看全部非標準參數線程

image.png

常常使用的jvm堆大小就是經過非標準參數設置3d

-Xms<size>        設置初始 Java 堆大小
    -Xmx<size>        設置最大 Java 堆大小
    -Xss<size>        設置 Java 線程堆棧大小
複製代碼
  • 非Stable參數(-XX),此類參數各個jvm實現會有所不一樣,未來可能會隨時取消,須要慎重使用;

如:code

-XX:NewSize=341m,設置年輕代初始值爲341M。 -XX:MaxNewSize=341m,設置年輕代最大值爲341M。 
-XX:PermSize=512m,設置持久代初始值爲512M,但在java8及以後就不支持了,改用XX:MetaspaceSize=512m。 
-XX:MaxPermSize=512m,設置持久代最大值爲512M,一樣在java8及以後就不支持了,改用-XX:MaxMetaspaceSize=512m。
複製代碼

Program arguments 程序參數

這裏的配置參數爲主類的main方法的參數

public static void main(String[] args)
複製代碼

image.png

image.png

Environment variables 環境變量

Environment variables 爲環境變量,可經過System.getenv()方法得到。

image.png

image.png

如何經過命令形式設置參數

VM options、Program arguments 參數設置很簡單(在控制檯輸入java以後,第一行就告訴咱們用法了)

image.png

示例:

java -Dphone=xiaomi -classpath "D:\code\my\bread\out\production\bread;" com.carrywei.bread.basic.Environment a b c
複製代碼

說明:

「-Dphone=xiaomi -classpath "D:\code\my\bread\out\production\bread;"」爲Vm option

「com.carrywei.bread.basic.Environment」爲運行的類

「a b c」爲 Program arguments

Environment variables參數的設置,並非在程序啓動時設置的。它能夠配置在系統的環境變量裏,也能夠在運行的終端設置臨時的環境變量(只在此終端生效)

Windows系統設置使用SET命令,Linux使用export命令

Windows 演示效果 image.png

小結

Java啓動各類配置項保證了咱們同一套代碼可經過不一樣的配置運行在不一樣的環境上。開發環境使用開發配置,測試環境使用測試配置,生產環境使用生產配置。

相關文章
相關標籤/搜索