開始使用免費開始

追蹤記憶體使用量

你正在開發一個資料處理應用程式,會操作大量物件的集合。請實作一個記憶體監控工具,用來在關鍵操作期間追蹤記憶體用量,避免發生 OutOfMemoryError 例外。

本練習屬於課程

Java 程式碼最佳化

檢視課程

練習說明

  • 取得目前的 JVM 執行階段實例。
  • 使用 runtime 的總記憶體與可用記憶體計算目前已使用的記憶體。
  • 呼叫方法以取得已使用記憶體(MB)。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

public class Main {
    public static double getUsedMemoryMB() {
        // Retrieve the JVM runtime instance
        Runtime runtime = ____.____()
        // Calculate the current used memory
        long usedMemoryBytes = runtime.____() - runtime.____();
        return usedMemoryBytes / (1024.0 * 1024.0);
    }
    
    public static void main(String[] args) {
        double memoryBefore = getUsedMemoryMB();
        System.out.println("Memory before array creation: " + memoryBefore + " MB");
        
        int size = 10_000_000;
        double[] largeArray = new double[size];
        for (int i = 0; i < size; i++) {
            largeArray[i] = Math.sqrt(i);
        }
        
        // Get the currently used memory in megabytes
        double memoryAfter = ____();
        System.out.println("Memory after array creation: " + memoryAfter + " MB");
        System.out.println("Memory used by array creation: " + (memoryAfter - memoryBefore) + " MB");
    }
}
編輯並執行程式碼