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