Java 中的 JVM 引數
- Java 中 Java 選項或 JVM 引數的型別
- 在 Java 中使用 JVM 引數增加或減少堆記憶體
- 使用 JVM 引數處理 Java 中的記憶體不足錯誤
- 在 Java 中使用 JVM 引數進行垃圾收集
在 Java 中,當我們想要編譯和執行程式時,我們使用帶有類或檔名的 javac
和 java
命令。
但是,如果我們想通過一些修改(例如增加記憶體)執行 Java 程式,我們使用 Java 虛擬機器引數,也稱為 JVM 選項。
Java 中 Java 選項或 JVM 引數的型別
可以有三種型別的 Java 選項或 Java VM 引數:
-
標準選項 - 這些是可用的引數,可用於 JVM 的每個實現。我們可以在命令列中使用命令
java
獲取所有標準引數的列表。最常用的標準引數之一是
-version
命令,它返回本地機器上安裝的 JVM 的版本。 -
非標準選項 - 與標準選項不同,這些選項可能是也可能不是所有 JVM 實現的一部分。它們可以根據機器進行更改。
我們可以更改這些引數的值。要獲取非標準引數列表,我們使用命令
java -X
。每個非標準命令都以-X
開頭。 -
高階選項 - 顧名思義,這些是僅在更改本地 JVM 的特定部分時使用的高階引數。它們以
-XX
開頭。
我們將在以下部分討論非標準和高階選項。
在 Java 中使用 JVM 引數增加或減少堆記憶體
當我們建立一個需要大量記憶體而不是分配給它的大型程式時,我們需要修改堆。我們需要使用 JVM 引數來執行此操作。
我們有兩個引數來使用修改後的堆記憶體啟動應用程式。 -Xms
設定最小堆大小,而 -Xmx
命令設定最大值。
我們需要指定要使用命令分配的大小。
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
我們使用以下命令將最大堆大小設定為 2 GB。
java -Xmx2g Java-Class-Name
使用 JVM 引數處理 Java 中的記憶體不足錯誤
每當大型程式需要的記憶體多於分配的記憶體時,就會發生記憶體不足錯誤並終止。如果我們想檢查記憶體洩漏,我們必須將堆轉儲到一個檔案中。
該檔案採用 HPROF 二進位制格式,可以開啟以在支援的工具中進行檢查。
如果出現記憶體不足錯誤,我們使用以下命令轉儲堆。
-XX:+HeapDumpOnOutOfMemoryError
我們需要指出檔案的路徑和當前程序的程序 id。為此,我們使用以下命令。
-XX:HeapDumpPath= path-to-the-hprof-file-with-<pid>
在 Java 中使用 JVM 引數進行垃圾收集
如果我們想改變 Java 中垃圾收集的演算法,我們使用以下命令。
-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+USeParNewGC
-XX:+UseG1GC
在這裡,我們可以看到我們可以使用四種型別的垃圾收集器,並且每種收集器都有不同的使用動機。
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn