我有一个无限运行的类(什么都不做,只是循环和休眠),叫做NeverReturn。我尝试在Windows XP 32位中使用以下命令运行它:
java -Xms1200M NeverReturn
我发现命令我可以同时创建4个java实例。第5个和下一个java命令将无法创建jvm。
如果我将命令更改为-Xms600M,我可以创建8个java实例。第9次会失败。
有人可以解释一下吗?我正在使用sun jdk1.6 update 23和jdk1.5 update 22。
答案 0 :(得分:5)
如果您有四个JVM实例,每个实例使用1200M内存,则可以为您分配4800M内存。
如果你有8个JVM实例,每个实例使用高达600M的内存,那么你也可以获得4800M的内存。
如果我不得不猜测,看起来问题是你试图为JVM实例承诺比系统上存在更多的内存。丢弃您承诺的内存量应该会使您可以运行的实例数量相应增加。
答案 1 :(得分:2)
简单回答: 尽可能多的JVM;当然,只要您的机器可以提供必要的资源(读取内存)。
如果您想询问机器中可以使用多少JDK / JRE(不同的JDK / JRE版本);答案是“没有约束”。
所以你也可以拥有很多JDK,但我不确定Windows安装程序。您总是可以选择使用转储。
希望这有帮助。
答案 2 :(得分:0)
对于以这种方式启动的虚拟机的每个实例,600 MB内存专用于它,这意味着如果您只有1 GB内存,则只有在允许每个实例消耗时才能成功启动一个JVM实例600 MB的内存。通过它的声音,在运行8个600 MB的实例时,你有大约4.6 GB的可用内存。