菜单

获取 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此链接指向[相关页面]。

  • URLをコピーしました!
目录