在 Java 中增加堆空間

Rupam Yadav 2023年1月30日 2022年4月26日
  1. 使用命令列增加 Java 堆大小
  2. 在整合開發環境 (IDE) 中增加 Java 堆大小
在 Java 中增加堆空間

在 Java 中,堆空間主要用於垃圾收集和為物件分配記憶體。

在我們的機器上安裝 JVM 時會分配一個預設的堆空間,但它可能會有所不同。以下幾點展示了我們如何在 Java 中使用兩種方法來增加堆大小。

使用命令列增加 Java 堆大小

在 Java 中增加堆大小的第一種方法是使用命令列執行覆蓋預設 Java 堆空間的命令。我們遵循以下兩個步驟。

第 1 步:檢查 Java 中的預設最大堆大小

在我們更改 Java 中的堆大小之前,我們必須知道分配給 JVM 的預設最大堆大小。為此,我們使用程式碼 Runtime.getRuntime().maxMemory() 返回最大堆大小(以位元組為單位)。

在程式中,我們以位元組為單位獲得最大堆空間,並將其轉換為更易讀的格式,如兆位元組或千兆位元組。輸出顯示我們當前的預設大小約為 1.48 GB。

我們執行此步驟是為了不分配小於堆預設大小的大小。

public class JavaExample {
    public static void main(String[] args) {

        double maxHeapSize = Runtime.getRuntime().maxMemory();
        String sizeInReadableForm;

        double kbSize = maxHeapSize / 1024;
        double mbSize = kbSize / 1024;
        double gbSize = mbSize / 1024;

        if (gbSize > 0) {
            sizeInReadableForm = gbSize + " GB";
        } else if (mbSize > 0) {
            sizeInReadableForm = mbSize + " MB";
        } else {
            sizeInReadableForm = kbSize + " KB";
        }

        System.out.println("Maximum Heap Size: " + sizeInReadableForm);
    }
}

輸出:

Maximum Heap Size: 1.48046875 GB

步驟 2:使用命令列設定最大堆大小

現在我們知道了最大 Java 堆空間,我們使用命令列來增加它。

為了獲得我們可以用來修改堆大小的命令,我們開啟命令列並使用命令 java -X 返回一個完整的命令列表,但我們只對以下兩個命令感興趣。

命令 -Xms 設定初始和最小堆大小,而 -Xms 設定最大大小;我們需要使用第二個命令。

 -Xms<size>        set initial Java heap size
 -Xmx<size>        set maximum Java heap size

在命令列中,我們編寫以下命令來執行我們在第一步中看到的程式。

我們使用 -Xmx2g 將堆大小增加 2GB。請注意,我們將儲存單元寫為單個字元;例如,如果我們想設定一個 2GB 的堆大小,我們寫 2g。

輸出顯示大約 1.4GB 的預設大小現在修改為 2.0GB。

java -Xmx2g JavaExample

輸出:

Maximum Heap Size: 2.0 GB

在整合開發環境 (IDE) 中增加 Java 堆大小

如果我們執行程式,我們還可以在 IDE 中增加 Java 堆空間。儘管某些 IDE 可能有不同的步驟來執行任務,但如果我們遵循這些步驟,我們可以在大多數 IDE 中修改堆大小。

  • 我們在選單欄中找到執行選單項。
  • 執行選單項中,我們必須開啟一個名為執行配置編輯配置的選項。
  • 將開啟一個對話方塊,顯示有關我們要使用配置執行的應用程式的詳細資訊。

    將有兩個輸入框:一個用於程式引數,第二個用於 VM 引數。如果沒有 VM 引數的輸入框,我們可以使用 Modify Options 按鈕新增它們。

  • 在 VM 引數的輸入框中,我們編寫以下命令來執行增加堆大小的程式。
    -Xmx2g
    
Author: 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 Heap