Как понять эти номера памяти в JVM? - PullRequest
0 голосов
/ 03 ноября 2018

Мой компьютер - Mac с 8 ядрами и 16G памяти. Я использую функции, чтобы проверить, сколько памяти я могу предоставить JVM для моего приложения.

System.out.println(Runtime.getRuntime().availableProcessors());          
System.out.println(Runtime.getRuntime().freeMemory()/(1000*1000));
System.out.println(Runtime.getRuntime().maxMemory()/(1000*1000)));
System.out.println(Runtime.getRuntime().totalMemory()/(1000*1000));

Используя размер кучи по умолчанию, я распечатал:

Available processors (cores): 8
Free memory (bytes): 915
Maximum memory (bytes): 3817
Total memory (bytes): 1955

Теперь в Intellij я установил JVM с -Xmx = 8G

Available processors (cores): 8
Free memory (bytes): 579
Maximum memory (bytes): 7635
Total memory (bytes): 1874

Максимальная память увеличилась соответственно, но почему «свободная память» и «общая память» значительно не увеличились? Мне нужно увеличить размер кучи для моего приложения.

И второй вопрос, связанный с тем, как установить размер кучи в проекте Spring-boot. В поме я установил следующее:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <meminitial>1024m</meminitial>
                    <maxmem>6048m</maxmem>
                </configuration>
            </plugin>

Я распечатал номера памяти, используя те же функции, что и в моем коде, настройка памяти "6048m" вообще не меняется. Кажется, настройки не имеют никакого эффекта. Это почему? Это приложение Spring-boot.

...