Java 虛擬機
JVM的啟動引數
運行一個java程式,在命令列中輸入命令:
jps: 顯示當前運行在虛擬機上的行程,可以查看我們自己的程式的行程號:3272

然后輸入下面命令:該命令會列印當前行程運行的 虛擬機的引數配置資訊,這些引數是虛擬機啟動時自己的默認引數
jinfo -flags 3272

查看一下這些引數代表的是什么意思:可以到下面的鏈接中去查找
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
-XX:CICompilerCount=4:設定用于編譯的編譯器執行緒數,當然這個引數在服務端上跟客戶端上可能會不一樣,還有機器的配置也會影響到虛擬機的該默認引數的值,在我的設備上是4.
-XX:InitialHeapSize=31457280:設定記憶體分配池的初始大小(以位元組為單位),此值必須是 0 或 1024 的倍數且大于 1 MB,附加字母k或K以指示千位元組,m或M指示兆位元組,g或G指示千兆位元組,默認值是在運行時根據系統配置選擇的,我的電腦上顯示的沒有指定單位,說明它是以位元組為單位的,占用了31457280個位元組
-XX:MaxHeapSize=31457280:設定記憶體分配池的最大大小(以位元組為單位),此值必須是 1024 的倍數且大于 2 MB,附加字母和上面的-XX:InitialHeapSize代表的含義是一樣的,默認值是在運行時根據系統配置選擇的,它與-XX:InitialHeapSize這個值 一般設定成一樣的,
-XX:MaxMetaspaceSize=31457280:設定可為類元資料分配的最大本機記憶體量,默認情況下,大小不受限制,應用程式的元資料量取決于應用程式本身、其他正在運行的應用程式以及系統上可用的記憶體量,
-XX:MaxNewSize=10485760:為年輕代 設定堆的最大大小(以位元組為單位)
-XX:MaxTenuringThreshold=6:設定用于自適應 GC 大小調整的最大任期閾值,最大值為 15,并行(吞吐量)收集器的默認值為 15,CMS 收集器的默認值為 6,垃圾回收一次,沒有被回收掉的物件,它的GC年齡會加1,這個閾值的意思就是經過6次回收,物件仍然存活,這時就要將物件從年輕代,移動到老年代了,
-XX:MinHeapDeltaBytes=196608:這個值竟然沒有在上面的檔案中找到
-XX:NewSize=10485760:為年輕代 設定堆的初始大小(以位元組為單位),與上面的-XX:MaxNewSize設定年輕代的最大大小是相對應的,堆的年輕代區域用于新物件,GC 在該區域執行的頻率高于其他區域,如果年輕代的大小太小,則會執行大量的minor GC,如果大小太大,則只會執行完整的 GC,這可能需要很長時間才能完成,Oracle 建議您將年輕代的大小保持在整個堆大小的一半到四分之一之間,
-XX:OldPLABSize=16:
-XX:OldSize=20971520:
-XX:-UseCompressedOops:禁用壓縮指標的使用,默認情況下啟用此選項,當 Java 堆大小小于 32 GB 時使用壓縮指標,啟用此選項后,物件參考表示為 32 位偏移量而不是 64 位指標,這通常會在運行 Java 堆大小小于 32 GB 的應用程式時提高性能,此選項僅適用于 64 位 JVM,當 Java 堆大小大于 32GB 時,也可以使用壓縮指標,
為老年代啟用 CMS 垃圾收集器,Oracle 建議您在吞吐量 ( -XX:+UseParallelGC) 垃圾收集器無法滿足應用程式延遲要求時使用 CMS 垃圾收集器,G1 垃圾收集器 ( -XX:+UseG1GC) 是另一種選擇,
-XX:+UseConcMarkSweepGC:默認情況下,此選項處于禁用狀態,并根據機器的配置和 JVM 的型別自動選擇收集器,當啟用該選項時,-XX:+UseParNewGC選項將自動設定,你不應該禁用它,因為下面的選項組合已經在JDK 8被棄用:-XX:+UseConcMarkSweepGC -XX:-UseParNewGC,
-XX:+UseParNewGC:啟用在年輕代中使用并行執行緒進行收集,默認情況下,此選項處于禁用狀態,當您設定該-XX:+UseConcMarkSweepGC選項時,它會自動啟用, 它與上面的 個是配對使用的,
-XX:+UseFastUnorderedTimeStamps:
-XX:-UseLargePagesIndividualAllocation:
-Xms30m:設定堆的最小值和初始大小(以位元組為單位),此值必須是 1024 的倍數且大于 1 MB,附加字母k或K以指示千位元組,m或M指示兆位元組,g或G指示千兆位元組,-Xms與上面的-XX:InitalHeapSize是等效的,
-Xmx30m:以位元組為單位指定記憶體分配池的最大大小(以位元組為單位),此值必須是 1024 的倍數且大于 2 MB,附加字母k或K以指示千位元組,m或M指示兆位元組,g或G指示千兆位元組,默認值是在運行時根據系統配置選擇的,-Xmx與上面的-XX:MaxHeapSize引數配置是等效的,
上面的這些引數也可以在java程式啟動時手動修改:
- 如果是在IDE中運行程式的話,可以在VM Options配置中修改我們想要設定的引數;
- 如果是用java命令執行的話,可以在java命令后面跟上這些引數,并以空格分開,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/301317.html
標籤:其他
上一篇:Token在android的使用
下一篇:Dialog 按照順序彈窗
