Как выделить кучу памяти для Java-программы - PullRequest
0 голосов
/ 11 мая 2018

У меня есть Java-программа, которая создает 20 различных строковых объектов внутри бесконечного цикла for

 for(int i = 0 ; i >=0 ; i++){
    String s = new String("Test");
    String s1 = new String("Test");
    /*creating more string objects here */
    System.out.println(s);
}

, и запустила эту программу с помощью java -Xms1m -Xmx1m HelloWorld enter image description here и открылаVisualVM для контроля размера кучи.Я не уверен, почему он показывает 2,097,152 B как для размера, так и для максимума сверху. Разве это не должно быть 1 000 000? И мне также интересно, почему использование не растет выше 700 000 B. это всегда между 300000 и 700000

, пожалуйста, смотрите вложение и не уверены, почему в CPU есть сообщение "Не поддерживается для этой JVM"?

1 Ответ

0 голосов
/ 11 мая 2018

Существует несколько флагов JVM, которые вы можете использовать:

  • -Xmx установить максимальную память кучи для конкретной JVM (используйте вот так: -Xmx2G. Она ограничит доступную кучу 2 ГБ)
  • -Xms устанавливает начальное выделенное количество кучи для JVM (используйте ike this: -Xms2G. Он установит начальный размер кучи в 2 ГБ)

Вы всегда можете установить алгоритм сбора мусора из набора существующих алгоритмов:

  • -XX: + UseG1GC использует G1 gc
  • -XX: + UseConcMarkSweepGC использует одновременную метку и развертку gc

Вы можете проверить некоторые изфлаги здесь: http://files.zeroturnaround.com/pdf/zt_JVM-options-cheat-sheet.pdf

...