Java 中的 JVM 引數

Rupam Yadav 2023年1月30日
  1. Java 中 Java 選項或 JVM 引數的型別
  2. 在 Java 中使用 JVM 引數增加或減少堆記憶體
  3. 使用 JVM 引數處理 Java 中的記憶體不足錯誤
  4. 在 Java 中使用 JVM 引數進行垃圾收集
Java 中的 JVM 引數

在 Java 中,當我們想要編譯和執行程式時,我們使用帶有類或檔名的 javacjava 命令。

但是,如果我們想通過一些修改(例如增加記憶體)執行 Java 程式,我們使用 Java 虛擬機器引數,也稱為 JVM 選項。

Java 中 Java 選項或 JVM 引數的型別

可以有三種型別的 Java 選項或 Java VM 引數:

  1. 標準選項 - 這些是可用的引數,可用於 JVM 的每個實現。我們可以在命令列中使用命令 java 獲取所有標準引數的列表。

    最常用的標準引數之一是 -version 命令,它返回本地機器上安裝的 JVM 的版本。

  2. 非標準選項 - 與標準選項不同,這些選項可能是也可能不是所有 JVM 實現的一部分。它們可以根據機器進行更改。

    我們可以更改這些引數的值。要獲取非標準引數列表,我們使用命令 java -X。每個非標準命令都以 -X 開頭。

  3. 高階選項 - 顧名思義,這些是僅在更改本地 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 Yadav
Rupam Yadav avatar Rupam Yadav avatar

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

相關文章 - Java Method