Как правильно редактировать использование памяти Java
-Xmn определяет объём занятой памяти до которой сборщик мусора должен освобождать память (если это возможно);
-Xms определяет размер начальной выделенной памяти под объекты;
-Xmx определяет максимальный размер памяти, выше которого приложение не задействует;
Правило настроек запуска:
А также:
Xms примерно равно Xmx ;
Xmn примерно половина от Xms ;
Java «Heap» is a continous memory region where all Objects data will be stored (by data, we mean instance of class, primitive and references). It’s a big part of the process heap. It can be configured using the following parameters:
-Xmx : max heap size (ex: -Xmx1024);
-Xms : min heap size. Having -Xms = 1.8GB (32bit) can be bad, because you don’t let memory for anything else;
-Xmn : the size of the heap for the young generation.
Young generation represents all the objects which have a short life of time. Young generation objects are in a specific location into the heap, where the garbage collector will pass often. All new objects are created into the young generation region (called «eden»). When an object survive is still «alive» after more than 2-3 gc cleaning, then it will be swap has an «old generation» : they are «survivor» .
Good size is 33%
-XX:NewRatio : the same as Wmn, but using a % (dynamic fs static -Xmn option);
-XX:NewRatio=3 means that the ratio between the old and young generation is 1:3;
-XX:NewSize — Size of the young generation at JVM init. Calculated automatically if you specify -XX:NewRatio ;
-XX:MaxNewSize — The largest size the young generation can grow to (unlimited if this value is not specified at command line);
-XX:SurvivorRatio : «old generation» called tenured generation, ratio, in %. For example, -XX:SurvivorRatio=6 sets the ratio between each survivor space and eden to be 1:6 (eden is where new objects are created);
-XX:MinHeapFreeRatio: default is 40%. JVM will allocate memory to always have as minimum 40% of free memory. When -Xmx = -Xms, it’s useless;
-XX:MaxHeapFreeRatio: default is 70%. The same as Min, to avoid unecessary memory allocation.
Java — что такое параметр -Xms и -Xmx?
В Java -Xms установить начальный размер кучи Java, в то время как -Xmx установить максимальный размер кучи Java.
1. Некоторые java -Xms -Xmx Примеры :
# Start with 128MB of memory, and allow the Java process to use up to 1024MB of memory. java -Xms128m -Xmx1024m
# Start with 256MB of memory, and allow the Java process to use up to 4G (4096MB) of memory. java -Xms256m -Xmx4g
2. Исходный и максимальный размер кучи Java по умолчанию назначается на основе этого алгоритма эргономики , также прочитайте эту статью — Узнайте свой объем памяти кучи Java
3. Если процесс Java превысил -Xmx максимальный размер кучи Java, популярный java.lang.OutOfMemoryError будет брошен.
4. Для других вариантов запустите java -X
> java -X -Xbatch disable background compilation -Xbootclasspath/a: append to end of bootstrap class path -Xcheck:jni perform additional checks for JNI functions -Xcomp forces compilation of methods on first invocation -Xdebug provided for backward compatibility -Xdiag show additional diagnostic messages -Xfuture enable strictest checks, anticipating future default -Xint interpreted mode execution only -Xinternalversion displays more detailed JVM version information than the -version option -Xloggc: log GC status to a file with time stamps -Xmixed mixed mode execution (default) -Xmn sets the initial and maximum size (in bytes) of the heap for the young generation (nursery) -Xms set initial Java heap size -Xmx set maximum Java heap size -Xnoclassgc disable class garbage collection -Xrs reduce use of OS signals by Java/VM (see documentation) -Xshare:auto use shared class data if possible (default) -Xshare:off do not attempt to use shared class data -Xshare:on require using shared class data, otherwise fail. -XshowSettings show all settings and continue -XshowSettings:all show all settings and continue -XshowSettings:locale show all locale related settings and continue -XshowSettings:properties show all property settings and continue -XshowSettings:vm show all vm related settings and continue -XshowSettings:system (Linux Only) show host system or container configuration and continue -Xss set java thread stack size -Xverify sets the mode of the bytecode verifier
Рекомендации
- Настройка виртуальных машин Java (JVM)
- Затмение -Xms / -Xmx
- алгоритм эргономики
- Узнайте свой объем памяти кучи Java
java -Xms -Xmx за что отвинчивает этот параметр? я понял что за ОЗУ под ВМ ну подробней можно)
фанат, не надо свистеть что только мегабайты.
-Xmx1024k
-Xmx512m
-Xmx8g
всё это допустимые значения.
Остальные ответы
-Xms — минимальное ОЗУ
-Xmx — максимальное ОЗУ
В общем выставление разрешимого кол-ва ОЗУ для использование
от 1024 до 2048 например
Del eteМастер (1204) 8 лет назад
спасибо) а то всегда тыкаю одинаковые числа что туда что туда) а у Gb указывать можно?
waac Гуру (3987) нет, только мегабайт
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.
Повышаем производительность в Java
Если программа, которую вы пишете, может вернуть коллекцию, не содержащую никаких значений, следует удостовериться, что возвращается пустая коллекция, а не Null — это позволит сэкономить вам время на разнообразные проверки, а также избавит от многих ошибок.
Создаем объекты лишь тогда, когда нужно
Пожалуй, создание объектов является одной из наиболее затратных операций в Java. Хорошая практика — создавать их лишь тогда, когда они действительно необходимы.
Deadlocks
Взаимная блокировка потоков (дэдлок) бывает по множеству причин, а полностью уберечься от них в Java 8 весьма сложно. Зачастую, такое происходит, если один синхронизируемый объект ожидает ресурсов, а они заблокированы другим синхронизированным объектом.
Рассмотрим пример тупика потока:
Результат программы будет следующим:
Если изменить порядок вызова потоков, то взаимоблокировок можно избежать:
Резервирование памяти
Ряд Java-приложений обладает повышенной ресурсоемкостью, что может приводить к замедленной работе. Чтобы повысить производительность, можно выделить на Java-машине больше оперативной памяти.
Здесь: • Xms — минимальный пул выделения памяти; • Xmx — максимальный пул; • XX: PermSize — начальный размер, который выделится при запуске JVM; • XX: MaxPermSize — максимальный размер, который выделится при запуске JVM.