在Java中,如何找出最大堆大小?

时间:2016-03-21 15:53:59

标签: java heap heap-memory

我在Java中有以下类:

public class MemoryUsage 
{
    public static void main(String[] args)
    {
        Vector v = new Vector();
        while (true)
        {
            byte b[] = new byte[1048576];

            try {
                Thread.sleep(200);
            } catch (InterruptedException ie){}        
            v.add(b);
            Runtime rt = Runtime.getRuntime();
            System.out.println( "free memory: " + rt.freeMemory() );
        }
    }

    public void showCurrentTime() 
    {
        long time = System.currentTimeMillis();
        System.out.println(time);   
    } 
}

我想限制这个程序可以使用多少内存。我尝试设置初始和最大大小(来自命令行),如下所示:

C:\JMX_code\Memory_test>java -Xms2m -Xmx4068M MemoryUsage
Error occurred during initialization of VM
The size of the object heap + VM data exceeds the maximum representable size

但这不起作用。我如何弄清楚自己的最大堆大小是多少?

我的Java版本信息。如下:

  

Java(TM)SE运行时环境(版本1.7.0_02-b13)Java HotSpot(TM)   64位服务器VM(内置22.0-b10,混合模式)

1 个答案:

答案 0 :(得分:1)

尝试将其更改为:

-Xms2034M -Xmx4068M MemoryUsage