Как установить максимальное использование памяти для JVM?
Содержание
Объем памяти, которую может использовать программа Java, зависит от ее среды. Библиотека Java Standard предоставляет следующие методы в классе выполнения.
- totalMemory()
- freeMemory()
- maxMemory()
TotalMemory()
TotalMemory() возвращает общий объем памяти в JVM. Значение, возвращаемое этим методом, может меняться со временем, в зависимости от среды хоста.
Runtime.getRuntime().totalMemory();
FreeMemory()
Функция freeMemory() возвращает количество свободной памяти в JVM. Вызов метода gc может привести к увеличению значения, возвращаемого функцией freeMemory.
Runtime.getRuntime().freeMemory();
maxMemory()
MaxMemory() возвращает максимальный объем памяти, который JVM будет пытаться использовать. Если нет встроенного предела, тогда будет возвращено значение Long.MAX_VALUE.
Runtime.getRuntime().maxMemory();
Каковы параметры Xms и Xmx?
Флаг -Xmx <память> указывает максимальный пул распределения памяти для виртуальной машины Java (JVM), а -Xms
-Xmx1024k -Xmx512m -Xmx8g
Синтаксис
-Xmx
Пример
Запуск JVM, как показано ниже, запустит его с 256 МБ памяти и позволит процессу использовать до 2048 МБ памяти:
Java -Xmx2048m -Xms256m
Следующая программа будет выводить параметры jvm и используемую, свободную, полную и максимальную память, доступные в jvm.
public class GetMemoryDeatils { public static void main(String args[]) { System.out.println("Used Memory : " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) + " bytes"); System.out.println("Free Memory : " + Runtime.getRuntime().freeMemory() + " bytes"); System.out.println("Total Memory : " + Runtime.getRuntime().totalMemory() + " bytes"); System.out.println("Max Memory : " + Runtime.getRuntime().maxMemory() + " bytes"); } }