JVM和GC關(guān)鍵參數(shù)

1. JVM內(nèi)存關(guān)鍵參數(shù)

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁(yè)制作,對(duì)成都濕噴機(jī)等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)營(yíng)銷推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

參數(shù)均在tomcat/bin/catalina.sh中設(shè)置

-server:服務(wù)器模式,不配置默認(rèn)是-client,一定要作為第一個(gè)參數(shù)。

-Xms和-Xmx:堆的最小值和最大值。線上這倆值必須一致。設(shè)置成一樣,避免每次GC之后重新分配堆的大小。建議堆的最大值設(shè)置為可用內(nèi)存最大值的80%(使用命令free或cat /proc/meminfo查看,實(shí)際可用物理內(nèi)存=free+buffer+cache)。但是如果真的設(shè)置到了80%,服務(wù)器的內(nèi)存可能會(huì)使用過(guò)高,可以調(diào)低一點(diǎn)。

-Xmn:設(shè)置堆內(nèi)存中的年輕代大小,剩下的為年老代大小。此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的3/8

-XX:NewRatio:表示年輕代與年老代的比值,去掉-Xmn這個(gè)參數(shù)后,默認(rèn)使用這個(gè)參數(shù),比值是2,也就是年輕代占1/3

-XX:SurvivorRatio:設(shè)置兩個(gè)survivor區(qū)與eden區(qū)的比值,設(shè)置為8,則兩個(gè)Survivor區(qū)與一個(gè)Eden區(qū)的比值為2:8,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/10

-XX:PermSize和-XX:MaxPermSize(jdk1.7):永久代初始值,默認(rèn)是物理內(nèi)存的1/64,永久代最大值,默認(rèn)是物理內(nèi)存的1/4。建議分別設(shè)置為128、512

-XX:MetaspaceSize和-XX:MaxMetaspaceSize(jdk1.8):同上

-Xss:設(shè)定每個(gè)線程的棧大小。每個(gè)線程都有一個(gè)棧,用于保存函數(shù)調(diào)用、返回地址等,默認(rèn)為1M,一般不需修改。

-XX:+AlwaysPreTouch:jvm啟動(dòng)的時(shí)候就分配內(nèi)存,其實(shí)就是預(yù)熱的效果。

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=path_address:jvm崩潰的時(shí)候會(huì)打印出堆信息

如果catalina.sh里沒(méi)有設(shè)置-Xms -Xmx -Xmn等值,可以在以下頁(yè)面查看,參考:https://blog.51cto.com/11009785/2396840JVM和GC關(guān)鍵參數(shù)

2. GC相關(guān)的參數(shù)

-XX:+UseConcMarkSweepGC:CMS,并發(fā)收集器(針對(duì)年老代)

-XX:CMSInitiatingOccupancyFraction=75和-XX:+UseCMSInitiatingOccupancyOnly一起使用,設(shè)定CMS在對(duì)內(nèi)存占用率達(dá)到75%的時(shí)候開(kāi)始GC(控制頻率,減少時(shí)常),第二個(gè)參數(shù)就是說(shuō)要用前面設(shè)定的值。默認(rèn)這個(gè)值是 -1,使用以下命令,可以查看設(shè)置的值,其中2713改為java的pid(通過(guò)ps -ef | grep java查看)

jinfo?-flag?CMSInitiatingOccupancyFraction?2713

然而,請(qǐng)記住大多數(shù)情況下,JVM比我們自己能作出更好的垃圾收集決策。因此,只有當(dāng)我們充足的理由(比如測(cè)試)并且對(duì)應(yīng)用程序產(chǎn)生的對(duì)象的生命周期有深刻的認(rèn)知時(shí),才應(yīng)該使用該標(biāo)志。

-XX:+ExplicitGCInvokesConcurrent:在CMS中并行執(zhí)行GC,不會(huì)暫停,提升GC效率

-XX:+ParallelRefProcEnabled和-XX:+CMSParallelInitialMarkEnabled一起使用,在CMS中并行執(zhí)行,減少暫停時(shí)間

-XX:+CMSScavengeBeforeRemark:在CMS GC之前執(zhí)行一次ygc(ygc針對(duì)年輕代,CMS GC針對(duì)年老代),避免CMS GC和ygc連在一起執(zhí)行從而增大暫停時(shí)間

-XX:+UseCMSCompactAtFullCollection:CMS是不會(huì)整理堆碎片的,加上此參數(shù)可以對(duì)存活的對(duì)象進(jìn)行整理,使memory碎片減少

-XX:CMSFullGCsBeforeCompaction=3: 多少次Full GC 后壓縮old generation一次。應(yīng)該是針對(duì)-XX:+UseCMSCompactAtFullCollection設(shè)置的次數(shù)。

-XX:+CMSClassUnloadingEnabled:(只有在UseConcMarkSweepGC也啟用的情況下才有用)在使用CMS垃圾回收機(jī)制的時(shí)候是否啟用類卸載功能。默認(rèn)這個(gè)是設(shè)置為不啟用的,如果你啟用了CMSClassUnloadingEnabled ,垃圾回收會(huì)清理持久代,移除不再使用的classes。

-XX:+PrintGCDateStamps -verbose:gc,在log里打印GC的詳細(xì)信息

一般來(lái)說(shuō),根據(jù)下面的風(fēng)格設(shè)置:

JVM和GC關(guān)鍵參數(shù)

更多的參數(shù)及介紹,請(qǐng)參考:

https://www.cnblogs.com/hongdada/p/10277782.html

文章名稱:JVM和GC關(guān)鍵參數(shù)
分享網(wǎng)址:http://muchs.cn/article28/geedjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、App設(shè)計(jì)標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)商城網(wǎng)站、小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司