请教一下关于JVM内存的问题。
Runtime t = Runtime.getRuntime();
System.out.println(t.totalMemory() / 1024 / 1024);
System.out.println(t.maxMemory() / 1024 / 1024);
环境:Win7 64位,4G内存,JDK7,HotSpot VM
没有设置JVM参数的情况打印如下:
15
247
第一个问题:这两个默认值不同环境下是不是打印的不一样?有没有什么规则可以算出来这个默认值的或者说是什么因素在影响这个默认值?
设置JVM参数-Xmx1000m -Xms500m打印如下:
483
966
第二个问题:我的理解-Xmx设置堆内存最大值,maxMemory()返回堆内存可使用最大值,难道是我理解有误,不然为什么会设置和打印的不一样?