選單

取得 Java 記憶體使用情況

目錄

Java 記憶取得使用數據 Runtime.getRuntime().totalMemory, freeMemory

Java 此函數傳回有關虛擬機器記憶體的信息,包括「總記憶體」、「已使用記憶體」和「最大可用記憶體」值。
各項說明如下:

  • 全部的・・・Runtime.getRuntime().totalMemory()這是分配給 Java 虛擬機器的記憶體量。
  • 使用量・・・Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()它變成了,
    這是當前已分配到記憶體中的物件的記憶體使用情況。
  • 最大可用・・・Runtime.getRuntime().maxMemory()這代表Java虛擬機器將嘗試使用的最大記憶體量。
    如果記憶體使用量接近總量,且垃圾回收機制無法釋放內存,Java 虛擬機將擴展到其「最大可用」容量。

範例程式

/**
 * Java 仮想マシンのメモリ総容量、使用量、
 * 使用を試みる最大メモリ容量の情報を返します。
 * @return Java 仮想マシンのメモリ情報
 */
public static String getMemoryInfo() {
    DecimalFormat f1 = new DecimalFormat("#,###KB");
    DecimalFormat f2 = new DecimalFormat("##.#");
    long free = Runtime.getRuntime().freeMemory() / 1024;
    long total = Runtime.getRuntime().totalMemory() / 1024;
    long max = Runtime.getRuntime().maxMemory() / 1024;
    long used = total - free;
    double ratio = (used * 100 / (double)total);
    String info = 
    "Java メモリ情報 : 合計=" + f1.format(total) + "、" +
    "使用量=" + f1.format(used) + " (" + f2.format(ratio) + "%)、" +
    "使用可能最大="+f1.format(max);
    return info;
}


執行結果 1

◆範例

public static void main(String[] args) { System.out.println(getMemoryInfo()); }

◆輸出結果

Java記憶體資訊:總計 = 1,984KB,已使用 = 458KB (23.1%),最大可用 = 65,088KB

執行結果 2

◆範例
嘗試更改 Java 堆大小並執行程式。
可以使用 Java 指令選項指定 Java 堆大小。

java -Xms64m -Xmx512m 主程序

-Xms 初始堆大小
指定Java虛擬機器的初始記憶體分配量。預設值為2MB。
-Xmx 最大堆疊大小
指定分配給 Java 虛擬機器的最大記憶體量。預設值為 64MB。

public static void main(String[] args) { System.out.println(getMemoryInfo()); }

◆輸出結果

Java記憶體資訊:總計 = 65,088KB,已使用 = 524KB (0.8%),最大可用 = 520,256KB

“總運行時間.getRuntime().totalMemory()”-Xms最大可用值為 Runtime.getRuntime().maxMemory()。-Xmx此連結指向[相關頁面]。

  • 網址をコピーしました!
目錄