JVM配置參數詳解


記錄一下jvm中的一些配置參數,這些肯定不全的,希望你們能留個言,補全一下,謝謝啦!

-XX: MaxDirectMemorySize--->設置直接內存,不設置與Java堆內存最大值一致

-XX:PermSize(老年代大小)和-XX:MaxPermSize(永久代大小)--->設置方法區大小

-Xoss--->設置本地方法棧大小(實際無效,棧容量只由-Xss設定)

-XX:+HeapDumpOnOutOfMemoryError--->生成內存溢出快照(查看內存溢出快照的工具,安裝JDK時,有自帶了幾種工具,具體怎么使用百度、谷歌)

-XX:+/-UseTLAB--->設置是否使用本地線程分配緩沖

-XX:-Xmx和-Xms--->設置堆內存(也是最常見的)

-XX:+UseLWPSynchronization(默認值)和-XX:+UseBoundThreads---->設置虛擬機使用線程模型

-XX:+UseSpinning--->設置是否啟動自旋鎖

-XX:PreBlockSpin--->設置自旋鎖的次數

-XX:+UseBiasedLocking--->設置設置虛擬機啟用偏向鎖(JDK1.6的默認值)

-XX:+UseCompressedOops--->對象指正壓縮功能(這個還待確認)

-XX:+TraceBytecodes和-XX:StopOmterpreterAt=<n>--->HotSpot虛擬機下設置斷點調試

-verbose:class-以及-XX:+TraceClassLoading、-XX:+TreaceClassUnLoading--->查看類加載和卸載信息(HotSpot)//這個目前沒弄明白 - =

-XX:UseConcMarkSweepGC--->默認新生代收集器

-XX:+UseParNewGC--->強制指定新生代收集器

-XX:ParallelGCThreads--->設置垃圾收集的線程數(ParNew收集器)

-XX:GCTimeRatio--->設置吞吐量大小[以整數為單位,默認99](ParallelScavenge收集器)

-XX:MaxGCPauseMillis--->設置最大垃圾收集器停頓時間[以毫秒為單位](ParallelScavenge收集器)

-XX:+UseAdaptiveSizePolicy--->是否開啟自動指定新生代大小、Eden與Survivor區的比例(-XX:SurvivorRatio)、晉升老年代對象大小(-XX:PretenureSizeThreshold)等細節(ParallelScavenge收集器)

-XX:CMSInitiatingOccupancyFraction--->控制CMS收集器的預留空間

-XX:CMSFullGCsBeforeCompaction--->設置執行多少次不壓縮后在進行一次壓縮(針對於CMS算法所產生的空間碎片,這里的壓縮是指對內存的空間碎片進行合並整理過程)

-XX:MaxGCPauseMillis--->設置GC最低的最大允許GC時間(單位毫秒)

-XX:SurvivorRatio--->設置新生代中Eden區與一個Survivor區的空間的比例

-XX:+PrintGCDetails--->打印GC信息

-XX:PretenureSizeThreshold--->設置大於該值的對象直接在老年代分配(不能像配置Java堆一樣直接寫多少M)

-XX:MaxTenuringThreshold--->設置對象晉升老年代的年齡閾值

-XX:HandlePromotionFailure--->設置空間分配擔保

-XX:+PrintGCApplicationStoppedTime -XX:+printGCDateStamps -Xlogc:gclog.log--->在日志中打印GC停頓時間

-Dsun.awt.keepWorkingSetOnMinimize=true---->設置程序在恢復最小化時立即響應

-Xverify:none--->禁止對字節碼校驗過程(只針對限定大部分的驗證)

-Xint--->禁止編譯器運作

-XX:+PrintGCTimeStamps--->打印GC停頓時間

-XX:+PrintGCDetails--->打印GC詳細信息

-verbose:gc--->打印GC信息,輸出內容與-XX:+PrintGCDetails一樣

-Xloggc:gc.log--->生成gc日志文件

-XX:+DisableExplicitGC--->屏蔽掉System.gc()

-XX:+UseConcMarkSweepGC、-XX:+UseParNewGC(配置虛擬機使用ParNew收集器[ParNew收集器是使用CMS收集器后的默認新生代收集器,配置上僅為了更加清晰])--->配置虛擬機使用CMS收集器

-XX:+TraceClassLoading-->設置觀察到此操作會導致子類的加載

-XX:UseSplitVerifier-->關閉在虛擬機對StackMapTable的驗證

-XX:+FailOverToOldVerifier-->設置在對字節碼類型校驗失敗的時候退回到舊的類型推到方式進行校驗

-Xbootvlasspath-->指定啟動類加載器的路徑

-Xcomp:強制虛擬機運行於“編譯模式”(最新的Sun HotSpot已經去掉了Xcomp)

-Xint:強制虛擬機運行於“解釋模式”

-version:輸出虛擬機執行模式

-client:強制制定虛擬機運行在client模式

-server:強制虛擬機運行在server模式

-XX:CompileThreshold:設置虛擬機運行模式的調用計數閾值(基於計數器的熱點探測,client默認閾值是1500,server默認的閾值是1000)

-XX:-UseCounterDecay:關閉熱度衰減

-XX:CounterHalfLifeTime:設置熱度衰減周期的時間

-XX:BackEdgeThreshold:設置虛擬機運行模式的調用計數閾值

-XX:OnStackReplacePercentage:間接調整回邊計數器的閾值(目前的虛擬機實際上並未使用-XX:BackEdgeThreshold參數,默認值是933)

-XX:-BackgroundCompilation:禁止后台編譯

-XX: +PrintCompliation:要求虛擬機在集市編譯時將被編譯成本地代碼的方法名稱打印出來

-XX: +PrintInlining:要求虛擬機輸出方法內聯信息

-XX: +PrintAssembly:要求虛擬機打印編譯方法的匯編代碼

-XX: +PrintOptoAssembly:輸入比較接近最終結果的中間代碼(用於Server VM )

-XX: +PrintLIR:輸入比較接近最終結果的中間代碼(用於Client VM )

-XX: +PrintCFGToFile:要求虛擬機將編譯過程各個階段的數據輸出到文件中(Client Compiler)

-XX: +PrintIdealGraphFile:要求虛擬機將編譯過程各個階段的數據輸出到文件中(Server Compiler)

-XX: +UnlockDiagnosticVMOptions:與-XX: +PrintAssembly一樣,Product版虛擬機(需要打開虛擬機診斷模式)

-XX: +PrintIdealGraphLevel=2 -XX: +PrintIdealGraphFile=indeal.xml:編譯后產生一個名為ideal.xml的文件,文件包含了Server Compiler編譯代碼的過程信息

-XX: +DoEscapeAnalysis:手動開啟逃逸分析

-XX: +PrintEscapeAnalysis:打印逃逸分析結果

-XX: +EliminateAllocations:開啟標量替換

-XX: +PrintEliminateAllocations:打印標量替換信息

-XX: +EliminateLocks:開啟同步消除

目前只看到過這些,如有不足、不對的地方,還請各位大神指出和甩磚..謝謝~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM