2013-07-24 2 views
0

Я правильно понял, что, когда один параметр указывает аргументы виртуальной машины в среде IDE (я использую NetBeans в этом случае), эти аргументы передаются только тогда, когда код запускается через IDE?О аргументах виртуальной машины

По сути, я хотел бы указать, что при выполнении моей программы минимальный/начальный размер кучи виртуальной машины составляет 2 ГБ. Я могу сделать это с помощью команды -Xms2048m, но мне интересно, есть ли способ достичь этого, не набрав команду (для клиента).

Даже думал, что я установил аргумент VM в NetBeans и Launch4J (я завершаю JAR в файл EXE), когда программа загружается &, выводит общий объем памяти Runtime, он всегда дает ~ 120 Мб.

Что мне не хватает?

Edit: я выводить общий объем памяти, используя ...

int mb = 1024 * 1024; 
System.out.println("Max Memory: " + Runtime.getRuntime().totalMemory()/mb); 

Edit 2: Может ли один не создать Инициирование программу, которая не принимает никаких аргументов, но запускает основную программу с соответствующими аргументами VM? Что-то вроде ...

public class Main { 
    public static void main(String[] args) { 
     String execName = new File(new File("").getAbsolutePath()) + "\\Program.exe"; 
     Runtime rt = Runtime.getRuntime(); 
     rt.exec("java -Xms2048m -Xmx4096m -jar " + execName); 
    } 
} 

ответ

1

Единственный способ сделать это, чтобы программа начать новую копию программы witht да кучи вы хотите. Примечание: конечный пользователь может не захотеть использовать 2 ГБ, например.

Если у них 32-битные окна, они не могут, например. если их значение по умолчанию составляет всего 120 МБ, у них, скорее всего, есть 32-битный клиентский JVM для Windows, который не может быть 2 ГБ. Если они имеют 32 ГБ или более, они могут захотеть более 2 ГБ.

BTW Gb = Giga-bit, Mb = Mega-bit, GB = Giga Byte. MB = мегабайт.

0

Нет, Вы не можете изменить размер кучи программно. Командная строка - единственный способ

0

Heap способен shrink после GC итерации, если GC решит, что существует слишком много неиспользованной кучи пространства, выделенных. Возможно, это так после запуска вашего приложения, каждый раз показывает вам одинаковый размер.

А также -Xms, кажется, устанавливает начальный размер кучи, а не минимальный

C:\Users\AStybaev>java -X 
... 
-Xms<size>  set initial Java heap size 
... 
Смежные вопросы