Какой максимальный размер кучи я могу выделить для JVM на компьютере с Win32? - PullRequest
0 голосов
/ 21 января 2010

У меня BEA JRockit JDK 5.0 Update 6, работающий на Windows XP. Я хочу знать, какова максимальная куча, которую я могу выделить, когда у меня есть основная память 4 ГБ на моей машине.

Ответы [ 2 ]

0 голосов
/ 21 января 2010

Получил ответ в этой ТАКИЕ ссылки

0 голосов
/ 21 января 2010

У меня нет JRockit, но я должен попробовать некоторые значения опции -Xmx. На моей JVM ограничение составляет 1610 МБ:

c:\tmp>java -version
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)

c:\tmp>java -Xmx1610m mem_test
1552 MB Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at mem_test.main(mem_test.java:15)

c:\tmp>java -Xmx1611m mem_test
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

Я протестировал его с помощью такой программы, чтобы вы могли видеть, сколько памяти приложение может выделить из кучи, доступной для JVM:

import java.util.ArrayList;
import java.io.*;

class mem_test
{
    public static void main(String[] args) 
        {
        ArrayList<byte[]> big_list = new ArrayList<byte[]>();
        int max = 0;
        int i = 0;
        while (true)
            {
            ++i;
            big_list.add(new byte[1024 * 1024]);
            max = i;
            if (i % 16 == 0)
                System.out.print("\r" + i + " MB ");
            }
        }
}
...