天天看點

jvm常用工具-jps

JPS-虛拟機程序狀況工具 JVM Processs Status Tool,顯示指定系統内,所有HotSpot虛拟機程序。

jps [ options ] [hostid]

jps 可以通過RMI協定查詢開啟了RMI服務的遠端虛拟機程序狀态,hostid為RMI系統資料庫中注冊的主機名。

參數如下:

  1. -q 隻輸出LVMID,省略主類的名稱
  2. -m 輸出虛拟機程序啟動時傳遞給主類main()方法的參數
  3. -l 輸出主類全名,如果程序執行的是jar包,則輸出jar路徑
  4. -v 輸出虛拟機程序啟動時JVM參數

下面主要詳述一下 jps -v

jvm常用工具-jps

參數說明:

-Xms:設定JVM初始堆記憶體

-Xmx:設定JVM最大記憶體

-XX:InitialCodeCacheSize and -XX:ReservedCodeCacheSize:

JVM一個有趣的,但往往被忽視的記憶體區域是“代碼緩存”,它是用來存儲已編譯方法生成的本地代碼。代碼緩存确實很少引起性能問題,但是一旦發生其影響可能是毀滅性的。如果代碼緩存被占滿,JVM會列印出一條警告消息,并切換到interpreted-only 模式:JIT編譯器被停用,位元組碼将不再會被編譯成機器碼。是以,應用程式将繼續運作,但運作速度會降低一個數量級,直到有人注意到這個問題。就像其他記憶體區域一樣,我們可以自定義代碼緩存的大小。相關的參數是-XX:InitialCodeCacheSize 和-XX:ReservedCodeCacheSize,它們的參數和上面介紹的參數一樣,都是位元組值。

-XX:+UseConcMarkSweepGC:

打開此開關後,使用ParNew+CMS+Serial Old的收集器組合進行記憶體回收,Serial Old收集器将作為CMS出現失敗後的後備收集器使用。

-XX:SoftRefLRUPolicyMSPerMB=N

這個參數比較有用的,官方解釋是:Soft reference在虛拟機中比在客戶集中存活的更長一些。其清除頻率可以用指令行參數 -XX:SoftRefLRUPolicyMSPerMB=來控制,這可以指定每兆堆空閑空間的軟引用保持存活(一旦它不強可達了)的毫秒數,這意味着每兆堆中的空閑空間中的軟引用會(在最後一個強引用被回收之後)存活1秒鐘。注意,這是一個近似的值,因為軟引用隻會在垃圾回收時才會被清除,而垃圾回收并不總在發生。系統預設為一秒,我覺得沒必要等1秒,客戶集中不用就立刻清除,改為 -XX:SoftRefLRUPolicyMSPerMB=0;

-XX:+HeapDumpOnOutOfMemoryError:

指令行參數-XX:+HeapDumpOnOutOfMemoryError是最簡單的方式生成記憶體轉儲。就像它的名字所說的,它會在記憶體被用完的時候(發生OOM)進行轉儲,這在産品環境非常好用。但是由于這個是一種事後轉儲(已經發生了OOM),它隻能提供一種曆史性的資料。它會産生一個二進制檔案,你可以使用jhat來操作該檔案(這個工具在JDK1.6中已經提供,但是可以讀取JDK1.5産生的檔案)。

其他常用JVM參數:

-XX:NewSize=n:設定年輕代大小

-XX:NewRatio=n:設定年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個年輕代年老代和的1/4

-XX:SurvivorRatio=n:年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:3,表示Eden:Survivor=3:2,一個Survivor區占整個年輕代的1/5

-XX:MaxPermSize=n:設定持久代大小

-XX:+UseSerialGC:虛拟機運作在client模式下預設打開,使用Serial和Serial Old收集器組合回收

-XX:+UseParallelGC:虛拟機在server模式下預設打開,垃圾收集器為Parallel Scavenge+Serial Old的收集器組合進行垃圾回收

-XX:+UseParalledlOldGC:打開此開關以後,使用Parallel Scavenge+Parallel Old進行垃圾回收

-XX:+PertenureSizeThreshold:直接晉升到老年代的對象大小,設定這個參數後,大于這個參數的對象将直接被放入老年代

-XX:MaxTenuringThreshold:晉升到老年代的對象年齡,每個對象在堅持過一次MinirGC之後 年齡會加1,當超過這個參數的值時就會進入老年代

-XX:UseAdaptiveSizePolicy:動态調整java堆中各個區域的大小以及進入老年代的年齡

-XX:HandlePromotionFailure:是否允許配置設定擔保失敗,即老年代的剩餘空間不足以應付新生代的整個Eden和Surivior區的所有對象都存活的極端情況

-XX:ParallelGCThreads:設定并行GC時進行記憶體回收的線程數

**-XX:GCTimeRatio:**GC時間占總時間的比率,預設為99%,即允許1%的GC時間,僅僅在使用Parallel Scavenge生效

-XX:MaxGCPauseMills:設定GC的最大停頓時間,僅僅在使用Parallel Scavenge生效

-XX:CMSInitiatingOccupancyFraction:設定CMS收集器在老年代空間被使用多少後觸發垃圾收集,預設為68%,僅在使用CMS時生效

-XX:UseCMSCompactAtFullCollection:設定CMS垃圾收集以後是否要進行一次記憶體碎片整理。僅在CMS使用時生效

-XX:CMSFullGCsBeforeCompaction:設定CMS在進行若幹次垃圾收集以後再啟動一次記憶體碎片整理。僅在使用CMS時生效