返回信息流我的机器内存为16G
$ free
total used free shared buffers cached
Mem: 16433780 5013600 11420180 0 1363892 2143668
-/+ buffers/cache: 1506040 14927740
Swap: 999420 0 999420
写一个简单的HelloWorld程序
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World!");
while(true){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
编译后启动
java -Xms22000m -Xmx100000m HelloWorld
这时的初始内存大于实际物理内存,但是程序仍然能够运行。-Xms23000m时就会显示
Error occurred during initialization of VM
Could not reserve enough space for object heap
22000m怎么也大于16433780k了吧,但是程序没有报错,这是怎么回事?以参数-Xms22000m同时开两个进程也没问题,用的是jdk7。
这是一条镜像帖。来源:北邮人论坛 / java / #26519同步于 2013/8/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
-Xms可以大于实际可用的内存?
hydralisk001
2013/8/5镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
这个只是定义分配的内容,只要在jvm可管理的范围捏就可以恶,你应该是64为的jdk吧
【 在 hydralisk001 的大作中提到: 】
: 我的机器内存为16G
: $ free
: total used free shared buffers cached
: ...................
是64位的jdk,但是-Xms23000m的时候就不行,这个怎么解释?还有JVM启动时向系统申请的内存难道不是-Xms后面的值吗?
【 在 sdlq101 的大作中提到: 】
: 这个只是定义分配的内容,只要在jvm可管理的范围捏就可以恶,你应该是64为的jdk吧