更新時(shí)間:2020-10-09 17:22:09 來源:動力節(jié)點(diǎn) 瀏覽1455次
參數(shù)在Java方法調(diào)用中起到了至關(guān)重要的作用,因此,JVM參數(shù)設(shè)置是我們學(xué)習(xí)JVM不容忽視的重點(diǎn)內(nèi)容。下面為大家介紹一些常見的11種JVM參數(shù)設(shè)置。
-server
啟用能夠執(zhí)行優(yōu)化的編譯器, 顯著提高服務(wù)器的性能,但使用能夠執(zhí)行優(yōu)化的編譯器時(shí),服務(wù)器的預(yù)備時(shí)間將會較長。生產(chǎn)環(huán)境的服務(wù)器強(qiáng)烈推薦設(shè)置此參數(shù)。
-Xss
單個(gè)線程堆棧大小值;JDK5.0 以后每個(gè)線程堆棧大小為1M,以前每個(gè)線程堆棧大小為256K。在相同物理內(nèi)存下,減小這個(gè)值能生成更多的線程。但是操作系統(tǒng)對一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無限生成,經(jīng)驗(yàn)值在3000~5000左右。
-XX:+UseParNewGC
可用來設(shè)置年輕代為并發(fā)收集【多CPU】,如果你的服務(wù)器有多個(gè)CPU,你可以開啟此參數(shù);開啟此參數(shù),多個(gè)CPU 可并發(fā)進(jìn)行垃圾回收,可提高垃圾回收的速度。此參數(shù)和+UseParallelGC,-XX:ParallelGCThreads搭配使用。
+UseParallelGC 選擇垃圾收集器為并行收集器。此配置僅對年輕代有效。即上述配置下,年輕代使用并發(fā)收集,而年老代仍舊使用串行收集。可提高系統(tǒng)的吞吐量。
-XX:ParallelGCThreads
年輕代并行垃圾收集的前提下(對并發(fā)也有效果)的線程數(shù),增加并行度,即:同時(shí)多少個(gè)線程一起進(jìn)行垃圾回收。此值最好配置與處理器數(shù)目相等。永久存儲區(qū)相關(guān)參數(shù):參數(shù)名參數(shù)說明
-Xnoclassgc
每次永久存儲區(qū)滿了后一般GC 算法在做擴(kuò)展分配內(nèi)存前都會觸發(fā)一次FULL GC,除非設(shè)置了-Xnoclassgc。
-XX:PermSize
應(yīng)用服務(wù)器啟動時(shí),永久存儲區(qū)的初始內(nèi)存大。
-XX:MaxPermSize
應(yīng)用運(yùn)行中,永久存儲區(qū)的極限值。為了不消耗擴(kuò)大JVM 永久存儲區(qū)分配的開銷,將此參數(shù)和-XX:PermSize這個(gè)兩個(gè)值設(shè)為相等。堆空間相關(guān)參數(shù)參數(shù)名參數(shù)說明。
-Xms
啟動應(yīng)用時(shí),JVM 堆空間的初始大小值。
-Xmx
應(yīng)用運(yùn)行中,JVM 堆空間的極限值。為了不消耗擴(kuò)大JVM 堆控件分配的開銷,將此參數(shù)和-Xms 這個(gè)兩個(gè)值設(shè)為相等,考慮到需要開線程,講此值設(shè)置為總內(nèi)存的80%。
-Xmn
此參數(shù)硬性規(guī)定堆空間的新生代空間大小,推薦設(shè)為堆空間大小的1/4。
上面所列的JVM 參數(shù)關(guān)系到系統(tǒng)的性能,而其中-XX:PermSize,-XX:MaxPermSize,-Xms,-Xmx 和-Xmn 這5 個(gè)參數(shù)更是直接關(guān)系到系統(tǒng)的性能,系統(tǒng)是否會出現(xiàn)內(nèi)存溢出。
-XX:PermSize 和-XX:MaxPermSize 分別設(shè)置應(yīng)用服務(wù)器啟動時(shí),永久存儲區(qū)的初始大小和極限大小;在生成環(huán)境中強(qiáng)烈推薦將這個(gè)兩個(gè)值設(shè)置為相同的值,以避免分配永久存儲區(qū)的開銷,具體的值可取系統(tǒng)“疲勞測試”獲取到的永久存儲區(qū)的極限值;如果不進(jìn)行設(shè)置-XX:MaxPermSize 默認(rèn)值為64M,一般來說系統(tǒng)的類定義文件大小都會超過這個(gè)默認(rèn)值。
-Xms 和-Xmx 分別是服務(wù)器啟動時(shí),堆空間的初始大小和極限值。-Xms的默認(rèn)值是物理內(nèi)存的1/64 但小于1G,-Xmx 的默認(rèn)值是物理內(nèi)存的1/4 但小于1G.在生產(chǎn)環(huán)境中這些默認(rèn)值是肯定不能滿足我們的需要的。也就是你的服務(wù)器有8g 的內(nèi)存,不對JVM 參數(shù)進(jìn)行設(shè)置優(yōu)化,應(yīng)用服務(wù)器啟動時(shí)還是按默認(rèn)值來分配和約束JVM 對內(nèi)存資源的使用,不會充分的利用所有的內(nèi)存資源。
我們可以通過調(diào)整這些JVM參數(shù)設(shè)置,來改變JVM中的一些數(shù)據(jù)和設(shè)置。所以,學(xué)會設(shè)置JVM 參數(shù)對于學(xué)習(xí)JVM來說刻不容緩,想要快速上手的小伙伴可以觀看本站的Java零基礎(chǔ)教程,即使零基礎(chǔ)也能學(xué)好Java!
初級 202925
初級 203221
初級 202629
初級 203743