如何限制JVM创建?

时间:2012-05-18 06:52:11

标签: java jvm heap-memory

我创建了以下类,并使用命令“java -Xms500m Class1”在15个终端上运行。

我期待在4或5次单独执行后不允许我这样做。我期待像无法创建更多JVM但所有程序都在运行的东西。如果每个JVM创建需要500Mb的初始堆内存(我的RAM为2GB),则JVM创建的最大限制应为4。

public class Class1
{
public static void main(String[] args)
{
  int i=0;
  while(true)
   {
    try
   {
    Thread.currentThread().sleep(100);
    System.out.println("hi-"+i);
   }
   catch (InterruptedException e)
   {
   }
   i++;
   if(i == 1000000)
   {
    break;
   }
 }
}

谢谢, Amaresh

3 个答案:

答案 0 :(得分:4)

-Xmx最大堆大小,-Xms初始堆大小。有关正确设置堆大小的详细信息,请参阅here

答案 1 :(得分:2)

由于虚拟内存,您可以创建累积堆大小比物理内存大的JVM。

在Unix和Windows中,由于硬盘驱动器用作内存,因此可以创建4GB + sizeof(分配用作内存的硬盘驱动器空间)JVM。因此,如果您有4GB的RAM并且分配了2G的硬盘用作内存,则可以使用java -Xmx500 -Xms500创建12个JVM。

在Linux中,交换空间用作内存。 在Windows中,可以在System Properties->Advanced->Performance->Settings

配置要用作内存的磁盘数量

答案 2 :(得分:1)

也可以尝试使用-Xms500m。这将设置初始内存。

您正在设置“最大”内存 - 但您的代码根本不会占用太多内存。

您的操作系统可能还有虚拟内存,所以它会超过2GB。

另外,请记住500m是堆大小。实际的JVM比单独的堆需要更多的内存。