1. 程式人生 > 其它 >JVM虛擬機器的一些引數設定

JVM虛擬機器的一些引數設定

JVM虛擬機器的一些引數設定

1、GC的輸出日誌:
a. -verbose:gc,輔助輸出一些詳細的gc資訊
b. -XX:+PrintGCDetails,輸出gc的詳細資訊
c. -XX:PrintGCApplicationStoppedTime,輸出gc造成應用造成應用程式暫停的時間
d. -XX:PrintGCDataStamps,gc發生的時間資訊
e. -XX:PrintHeapAtGC,在gc前後輸出堆中各個區域的大小
f. -Xloggc:[file],將gc資訊輸出到單獨的日誌檔案

2、Heap堆配置
a.-Xms:堆初始大小
b.-Xmx:堆最大值
c.-Xmn/Yong:新生代大小
d.PermSize/Perm:永久代大小。在Java7及以後版本,沒有Perm這個記憶體區,所以這個設定沒有意義。
e.MaxPermSize/Perm:永久代最大大小
f.-XX:SurvivorRatio:Eden:Survivor,新生代中新生區和倖存區的比值大小,例如:設定Yong區為10,設定-XX:SurvivorRatio=8,即設定Eden區為8,Survivor的s0和s1都為1,因為另個Survivor總有一個 Survivor為空

-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8

列印輔助GC資訊,堆初始大小20M,最大20M,新生代10M,列印GC詳細資訊,新生比為8:1。

3、Stack棧設定

a.-Xss:棧大小

b.-Xoss:本地方法棧大小(如果虛擬機器存在本地方法棧,才有意義。sun公司HotSpot不存在本地方法棧,這

個引數有,但是設定了也沒啥用)

4、GC設定:

    -XX:+UseCMSCompactAtFullCollection   :開關引數,預設開啟。在老年代記憶體不夠時,或者零碎記憶體放不下大物件時,進行記憶體壓縮。
    -XX:CMSFullGCsBeforeCompaction=5: 設定當進行5次不壓縮的GC後,跟著來一次壓縮的GC。
    -XX:MaxGCPauseMillis=m:m是一個大於0的毫秒數。即:收集器儘可能的保證記憶體回收花費的時間不超過設定值。
    -XX:GCTimeRatio=n:n是大於0小於100的整數。公式1/(1+n)為垃圾收集時間佔總時間的百分比。即:如果n=9。那麼1/(1+9)=10%。GC執行的時間佔總時間的10%。
    -XX:+UseAdaptiveSizePolicy:這是一個開關引數,開啟這個引數之後,就不需要手動指定新生代的大小(-Xmn),Eden和Survivor的比例(-XX:SurvivorRatio)、晉升老年代物件大小(-XX:PretenureSizeThreshold)等細節引數了,虛擬機器會根據當前系統的執行情況收集效能監控資訊,自動調整這些引數,以配合停頓時間或者吞吐量。
    -XX:PretenureSizeThreshold=m:大於m的物件將直接在老年代分配。例如:-XX:PretenureSizeThreshold=3145728,表示大於3M的物件將直接在老年代分配
    -XX:MaxTenuringThreshold=n:經過n次Minor GC(新生代gc)還存活的物件將進入老年代。預設n=15
    -XX:HandlePromotionFailure:開關引數 ,+/-決定是否開啟。作用:進行MinorGC操作時會判斷老年代剩餘空間是否大於新生代所有物件大小之和。如果大於,則安全。如果小於,則不安全。開啟引數,則表示允許不安全操作,可以在不安全的情況下進行MinorGC操作。關閉引數,表示不允許不安全的GC操作,在MinorGC同時要進行FullGC,騰出老年代空間。

————————————————
版權宣告:本文為CSDN博主「TuringK」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/dhcao1112/article/details/78786145