JVM 有两个经典参数:
- -Xms等价于-XX:InitialHeapSize,初始大小内存,默认物理内存1/64
- -Xmx等价于-XX:MaxHeapSize,最大分配内存,默认为物理内存1/4
我的电脑是物理是12GB,今天用代码来计算一下看看这俩参数和物理内存的关系是不是真的符合上面的关系,上代码: ?
public class ShowMemory {
public static void test_show_memory() {
// 返回java 虚拟机中的内存总数
long totalMemory = Runtime.getRuntime().totalMemory();
// 返回java 虚拟机试图使用的最大内存
long maxMemory = Runtime.getRuntime().maxMemory();
// 字节数转MB
double xms = totalMemory / 1024.0 / 1024;
double xmx = maxMemory / 1024.0 / 1024;
System.out.println(String.format("TOTAL_MEMORY(-Xms): %d B, %.2f MB.", totalMemory, xms));
System.out.println(String.format("MAX_MEMORY(-Xmx): %d B, %.2f MB.", maxMemory, xmx));
}
}
运行结果:
TOTAL_MEMORY(-Xms): 192610304 B, 183.69 MB.
MAX_MEMORY(-Xmx): 3075342336 B, 2932.88 MB.
?12GB物理内存操作系统会占用一部分,因此不是完整的12GB, 183.69 x 64 = 11756.16MB 2932.88 x 4 = 1173.52MB 这俩数字非常接近于12129MB,以为有误差,所以不会完全相等
|