Почему при использовании Powershell для указания -Xms & -Xmx они ничего не делают, но работают нормально через IDE Netbeans? - PullRequest
0 голосов
/ 11 января 2020

У меня есть программа Java, которая создает 4 пустых байтовых массива MAX_INTEGER - 2 длины и затем останавливается на бесконечном while l oop в основном методе.

Я установил Windows Java настроек для включения параметров -Xms12g -Xms12g (у меня 16 ГБ ОЗУ). Java settings

При запуске программы в IDE Netbeans с теми же параметрами, установленными для виртуальной машины, программа запускается, и я вижу в диспетчере задач, что используется ~ 8 г ОЗУ, что о том, что я ожидал. Task manager Java

Я скомпилировал программу в отдельный файл .jar, чтобы я мог запустить его вне Powershell, но при попытке запустить строку: java -jar prog.jar -Xms12g -Xmx12g Мне говорят Я как-то превышаю пространство кучи, но я только что видел, что это не относится к среде IDE: Powershell error

-XX:MaxPermSize=12g, похоже, тоже не имеет значения, и Виртуальная машина IDE не требует этого параметра.

Что мне здесь не хватает?

-

Полный исходный код для полноты:

package prog;

public class Prog
{
    public static final byte[] arr1 = new byte[Integer.MAX_VALUE - 2];
    public static final byte[] arr2 = new byte[Integer.MAX_VALUE - 2];
    public static final byte[] arr3 = new byte[Integer.MAX_VALUE - 2];
    public static final byte[] arr4 = new byte[Integer.MAX_VALUE - 2];

    public static void main(String[] args)
    {
        while(true);
    }
}

1 Ответ

0 голосов
/ 30 января 2020

Получается, что мне нужна была команда:

java -jar -Xmx12g -Xms12g prog.jar

not:

java -jar prog.jar -Xmx12g -Xms12g

, как я всегда думал.

У меня не было понял, что первые параметры были для JVM и 2-й набор (после .jar) был для .jar

...