面試官:JVM調優的常用基本配置參數有哪些?

平時工作用過的JVM常用基本配置參數有哪些

-Xms -Xmx -Xmn

-Xms128m -Xmx4096m -Xss1024K -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC

分爲K-V設值類型和布爾類型:

K-V設值類型:
  • KV設值類型

    公式:-XX:屬性key=屬性值value

    case:

    -XX:MetaspaceSize=128m

    -XX:MaxTenuringThreshold=15

    -Xms----> -XX:InitialHeapSize

    -Xmx----> -XX:MaxHeapSize

  • Boolean類型:

  • 公式:-XX+或者-某個屬性值 +表示開啓,-表示關閉

    是否打印GC收集細節 -XX:+PrintGCDetails 開啓 -XX:-PrintGCDetails 關閉

    是否使用串行垃圾回收器:-XX:-UseSerialGC


具體參數:

  • -Xms

    初始大小內存,默認爲物理內存1/64,等價於-XX:InitialHeapSize

  • -Xmx

    最大分配內存,默認物理內存1/4,等價於-XX:MaxHeapSize

  • -Xss

    設置單個線程棧的大小,默認542K~1024K ,等價於-XX:ThreadStackSize

  • -Xmn

    設置年輕代的大小

  • -XX:MetaspaceSize

    設置元空間大小

    元空間的本質和永久代類似,都是對JVM規範中方法區的實現,不過元空間與永久代最大的區別在於:元空間並不在虛擬機中,而是在本地內存中。 因此,默認元空間的大小僅受本地內存限制

  • -XX:+PrintGCDetails

    輸出詳細GC收集日誌信息

    [名稱:GC前內存佔用->GC後內存佔用(該區內存總大小)]

  • -XX:SurvivorRatio

    設置新生代中Eden和S0/S1空間的比例

    默認-XX:SurvivorRatio=8,Eden:S0:S1=8:1:1

  • -XX:NewRatio

    設置年輕代與老年代在堆結構的佔比

    默認-XX:NewRatio=2 新生代在1,老年代2,年輕代佔整個堆的1/3

    NewRatio值若爲k,則老年代佔比:新生代佔比 = k : 1

  • -XX:MaxTenuringThreshold

    設置垃圾的最大年齡

    默認-XX:MaxTenuringThreshold=15

    如果設置爲0,年輕代對象不經過Survivor區,直接進入年老代。對於年老代比較多的應用,可以提高效率。如果將此值設置爲一個較大的值,則年輕代對象回在Survivor區進行多次複製,這樣可以增加對對象在年輕代的存活時間,增加在年輕代即被回收的概率。

  • -XX:+UseSerialGC

    串行垃圾回收器

  • -XX:+UseParallelGC

    並行垃圾回收器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章