微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

请教一下关于JVM内存的问题。

时间:2014-04-15 19:42  浏览:努力统计中...
Runtimet=Runtime.getRuntime(); System.out.println(t.totalMemory()/1024/1024); System.out.println(t.maxMemory()/1024/1024); 环境:Win764位,4G内存,JDK7,HotSpotVM 没有设置JVM参数的情况打印如下: 15 247 第一个问题:
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()返回堆内存可使用最大值,难道是我理解有误,不然为什么会设置和打印的不一样?



不懂帮顶,我擦,还要6个字符

totalMemory()返回的是当前JVM进程目前可用的内存空间,maxMemory()返回的是当前JVM进程最大可用的内存空间(已用+当前可用),maxMemory()返回的值对应的应该是-Xmx设置的值。

所没有手动设置内存参数,则依不同机器不同环境而不同。

问题一:
一般来说 -Xms 是物理内存 1/64,-Xmx是物理内存 1/4,23bit下均不超过1G。
但是不同版本虚拟机在不同的操作系统环境下会存在少量不同,比如:
http://publib.boulder.ibm.com/infocenter/javasdk/v1r4m2/index.jsp?topic=%2Fcom.ibm.java.doc.diagnostics.142%2Fhtml%2Fappendix_e.html


问题二:
还是JVM相关,参见:
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4391499
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线------