я создаю класс Main, который содержит основной метод следующим образом:
public class Main {
public static void main(String[] _args) {
System.out.println("free:" + Runtime.getRuntime().freeMemory()
+ ". max:" + Runtime.getRuntime().maxMemory());
}
}
затем я запускаю класс с -Xms2m и -Xmx2m. вывод такой:
free:2984840. max:7471104
тогда мой вопрос в том, что если мегабайт составляет 1048576 байт, то показанная свободная память не равна 2 мегабайтам, как указано в параметре -Xms. когда я увеличиваю параметр -Xms до 3 м, он показывает бесплатное добавление мегабайта. кто-нибудь может объяснить, что происходит,.?
другой случай происходит с параметром -Xmx, когда я увеличиваю его до 3 м, 4 м и 5 м, максимальное значение продолжает показывать 7471104, что составляет около 71,44 м. Я действительно не понимаю, как эти два варианта работают.
это то, что печатается, когда я устанавливаю -Xms3m и -Xmx6m
free:4033416. max:7471104
кто-нибудь может помочь.?
благодарю вас :)
примечания: я работаю с Win7 x64 и Java 1.6 с обновлением 35.