JVM常用虛擬機參數

0 概述

java 虛擬機有很多參數可以讓我們去根據自己實際場景去設置,往往不同參數對系統性能也影響較大,本文主要介紹jvm常用的參數。

1 jvm 參數種類

  • -     (如-server)標準參數,所有的jvm都應該支持
  • -X    (如-Xms4g)非標準,每個jvm實現方式可能不同
  • -XX     (如 -XX:PermSize=96m)不穩定參數,下一個版本可能會取消
    可以使用java -XX:+PrintFlagsInitial查詢默認的虛擬機參數。

2 常見的堆相關設置

整個JVM內存大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小爲64m,所以增大年輕代後,將會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置爲整個堆的3/8。

  • -Xms 設置初始 Java 堆大小,如設置初始爲4g,-Xms4g
  • -Xmx 設置最大的java堆大小,如設置最大堆大小爲4g,-Xmx4g
    在生產環境上一般將這兩個值設爲相同,以減少運行期間系統在內存申請上所花的開銷。
  • -Xmn 設置年輕代大小,如設置年輕代大小爲2g,-Xmn2g
    -Xmn 和 -XX:Newsize 區別,前者是設置堆中新生代大小。後者是設置新生代初始大小-Xmn 是將NewSize與MaxNewSize設爲一致。
  • -XX:SurvivorRatio=10 設置年輕代Eden區和Survivor區(注意有兩個)的比值,這裏10 表示Eden:Survivor1:Survivor2=10:1:1
  • -XX:PermSize=96m -XX:MaxPermSize=256m 設置永久區初始大小爲96M,最大爲256M
  • -XX:+HeapDumpOnOutOfMemoryError 讓JVM在發生內存溢出時自動的生成堆內存快照
  • XX:HeapDumpPath=/home/hsc/log/java.hprof 設置內存快照的路徑

3 收集器設置

  • -XX:+UseSerialGC 使用Serial收集器(串行收集器)
  • -XX:+UseParallelGC 使用Parallel收集器(並行收集器)
  • -XX:+UseConcMarkSweepGC 使用CMS 收集器(設置併發收集器)

4 垃圾回收統計信息

  • -verbose:gc 輸出GC的詳細信息。
  • -Xloggc:/home/hsc/log/gc.log 將 GC 狀態記錄在文件中 (帶時間戳)
  • XX:+PrintGCDetails 打印出GC的詳細信息
  • -XX:+PrintGCDateStamps GC發生的時間信息
發佈了199 篇原創文章 · 獲贊 111 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章