欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解jvm啟動參數(shù)

 更新時間:2023年08月23日 10:21:37   作者:一戶董  
JVM的啟動參數(shù)是在啟動JVM時可以設(shè)置的一些命令行參數(shù),本文詳細的介紹了深入理解jvm啟動參數(shù),具有一定的參考價值,感興趣的可以了解一下

寫在前面

本文一起看下jvm啟動參數(shù)相關(guān)內(nèi)容,通過本文希望我自己也希望大家能夠真正的應(yīng)用到實際的工作中。

1:基本內(nèi)容介紹

一般我們啟動java程序有兩種方式,一種是直接運行一個有main函數(shù)的class,第二種是運行一個在MANIFEST文件中指定了main類的jar包,格式分別如下:

class文件格式:
    java [options] classname [args]
jar包格式:
    java [options] jarfilename [args]

其中[options]就是我們本文要分析的jvm的參數(shù)配置,[args]是main函數(shù)的參數(shù)即main(String[] arags)中的args

參數(shù)具體可以分為標(biāo)準(zhǔn)參數(shù),非標(biāo)準(zhǔn)參數(shù),系統(tǒng)屬性參數(shù)等,分別來看下。

標(biāo)準(zhǔn)參數(shù)
標(biāo)準(zhǔn)參數(shù)是以-開頭的參數(shù),這種參數(shù)是所有的JVM都會實現(xiàn)和支持的,并且會一直兼容,如-server 設(shè)置jvm的運行模式。

系統(tǒng)屬性參數(shù)
系統(tǒng)屬性參數(shù)通過-D設(shè)置,如-Dfile.encoding=UTF-8,設(shè)置編碼。

非標(biāo)準(zhǔn)參數(shù)
非標(biāo)準(zhǔn)參數(shù)通過 -X 設(shè)置,這種參數(shù)并不保證所有JVM的都支持,并且不保證向后兼容,如 -Xms2g -Xmx4g,可以通過java -X查看當(dāng)前jvm支持非標(biāo)準(zhǔn)參數(shù)都有哪些,如下:

bogon:~ xb$ java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
bogon:~ xb$ java -X
    -Xbatch           禁用后臺編譯
    -Xbootclasspath/a:<directories and zip/jar files separated by :>
                      附加在引導(dǎo)類路徑末尾
    -Xcheck:jni       對 JNI 函數(shù)執(zhí)行其他檢查
    -Xcomp            在首次調(diào)用時強制編譯方法
    -Xdebug           為實現(xiàn)向后兼容而提供
    -Xdiag            顯示附加診斷消息
    -Xfuture          啟用最嚴格的檢查, 預(yù)期將來的默認值
    -Xint             僅解釋模式執(zhí)行
    -Xinternalversion
                      顯示比 -version 選項更詳細的 JVM
                      版本信息
...

非穩(wěn)定參數(shù)

非穩(wěn)定參數(shù)通過 -XX: 開頭,其和具體的jvm有關(guān),且隨時可能隨時在下一個版本中刪除,具體使用在如下兩種形式其中一種,如下:

-XX:+-flag
    打開某布爾的開關(guān),如-XX:+UseG1GC設(shè)置使用G1 GC。
-XX:key=value
    通過kv的形式設(shè)置值,如-XX:MaxPermSize=256m,設(shè)置方法區(qū)大小為256m

2:參數(shù)分類

按照參數(shù)設(shè)置的內(nèi)容可以分為如下6類,分別看下。

2.1:系統(tǒng)屬性參數(shù)

系統(tǒng)屬性參數(shù)首先我們可以在操作系統(tǒng)級別設(shè)置,如果是windows則是在如下界面設(shè)置:

如果是Linux則可以在 /etc/profile 等文件中配置,但是這種方式配置的是全局的,對所有的進程生效,另外一種就是通過 -D:k=v 設(shè)置進程的屬性,如 -Dmaven.test.skip.true , -Dfile.encoding=UTF-8 ,當(dāng)然也可以通過System.setProperty來設(shè)置,如下測試:

2.2:內(nèi)存大小參數(shù)

為了方便對應(yīng)到具體的內(nèi)存區(qū)域,我們先來看下jvm的內(nèi)存結(jié)構(gòu),如下圖:

先看下主要參數(shù):

-Xms
    設(shè)置堆內(nèi)存的初始大小,即最小內(nèi)存
-Xmx
    設(shè)置堆的最大大小,一般-Xms和-Xmx設(shè)置為一樣,這樣可以避免堆內(nèi)存擴容帶來的性能抖動
-Xms   
    設(shè)置堆的young區(qū)的大小
-XX:MaxDirectMemorySize=size
    設(shè)置可以使用的最大堆外內(nèi)存,即操作系統(tǒng)的內(nèi)存,效果同-Dsun.nio.MaxDirectoryMemorySize=size
-Xss
    設(shè)置線程棧的大小,影響棧的深度,如-Xss1m,即設(shè)置線程棧的大小為1M,效果同-XX:ThreadStackSize=size

這些參數(shù)和jvm內(nèi)存結(jié)構(gòu)關(guān)系如下圖:

2.3:GC相關(guān)參數(shù)

主要是設(shè)置使用何種類型的垃圾收集器,如下:

-XX:+UseG1GC 使用G1垃圾收集器
-XX:+UseConcMarkSweepGC 使用CMS垃圾收集器
-XX:+UseSerialGC 使用串行垃圾收集器
-XX:+UseParallelGC 使用并行垃圾收集器

2.4:分析診斷相關(guān)相關(guān)參數(shù)

-XX:+HeapDumpOnOutOfMemoryError 當(dāng)發(fā)生OutOfMemoryError時,自動dump堆內(nèi)存
    如,java -XX:+HeapDumpOnOutOfMemoryError -Xmx256m SomeJavaFile
-XX:+HeapDumpPath 與-XX:HeapDumpOnOutOfMemoryError 配合使用,設(shè)置發(fā)生了OOM后生成dump文件路徑,如果是沒有指定則默認為啟動java程序的工作目錄
    如,java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local -Xmx256m SomeJavaFile
-XX:OnOutOfMemoryError 拋出OutOfMemoryError錯誤時執(zhí)行的腳本
-XX:ErrorFile=filename 致命錯誤的日志文件名稱,絕對路徑或者相對路徑

2.5:javaagent

TODO 學(xué)習(xí)后補充!??!

到此這篇關(guān)于深入理解jvm啟動參數(shù)的文章就介紹到這了,更多相關(guān)jvm啟動參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用maven構(gòu)建java9 service實例詳解

    使用maven構(gòu)建java9 service實例詳解

    本篇文章主要介紹了使用maven構(gòu)建java9 service實例詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • java中PreparedStatement和Statement詳細講解

    java中PreparedStatement和Statement詳細講解

    這篇文章主要介紹了java中PreparedStatement和Statement詳細講解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • java簡單工廠模式實例及講解

    java簡單工廠模式實例及講解

    這篇文章主要為大家詳細介紹了java簡單工廠模式實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java中的LinkedHashMap及LRU緩存機制詳解

    Java中的LinkedHashMap及LRU緩存機制詳解

    這篇文章主要介紹了Java中的LinkedHashMap及LRU緩存機制詳解,LinkedHashMap繼承自HashMap,它的多種操作都是建立在HashMap操作的基礎(chǔ)上的,同HashMap不同的是,LinkedHashMap維護了一個Entry的雙向鏈表,保證了插入的Entry中的順序,需要的朋友可以參考下
    2023-09-09
  • Spring?Cloud?Loadbalancer服務(wù)均衡負載器詳解

    Spring?Cloud?Loadbalancer服務(wù)均衡負載器詳解

    這篇文章主要介紹了Spring?Cloud?Loadbalancer服務(wù)均衡負載器,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 解決Mybatis出現(xiàn)報錯Error querying database.Cause: java.lang.IndexOutOfBoundsException: Index 9 out of

    解決Mybatis出現(xiàn)報錯Error querying database.Cause: j

    這篇文章主要介紹了解決Mybatis出現(xiàn)報錯Error querying database.Cause: java.lang.IndexOutOfBoundsException: Index 9 out of,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringCloud Sleuth實現(xiàn)分布式請求鏈路跟蹤流程詳解

    SpringCloud Sleuth實現(xiàn)分布式請求鏈路跟蹤流程詳解

    這篇文章主要介紹了SpringCloud Sleuth實現(xiàn)分布式請求鏈路跟蹤流程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-11-11
  • 一文搞懂Java橋接方法

    一文搞懂Java橋接方法

    這篇文章主要介紹了Java中的橋接方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java基于接口實現(xiàn)模擬動物聲音代碼實例

    Java基于接口實現(xiàn)模擬動物聲音代碼實例

    這篇文章主要介紹了Java基于接口實現(xiàn)模擬動物聲音代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 關(guān)于dubbo的RPC和RESTful性能及對比

    關(guān)于dubbo的RPC和RESTful性能及對比

    這篇文章主要介紹了關(guān)于dubbo的RPC和RESTful性能及對比,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論