- Чи є G1 колектором за замовчуванням у Java 7, і як ні, як активувати G1?
G1 не є колектором за замовчуванням у Java 7. -XX:+UseG1GC
увімкне G1GC
- Які додаткові налаштування має g1 у Java7?
Тут багато. Подивіться цю статтю оракула, щоб отримати повну інформацію.
G1 GC - це адаптивний збирач сміття із замовчуванням, які дозволяють йому працювати ефективно без змін.
З цієї причини налаштуйте критичні параметри
-XX:MaxGCPauseMillis
-XX:G1HeapRegionSize
-XX:ParallelGCThreads
-XX:ConcGCThreads
а всі інші параметри залиште за значенням за замовчуванням .
Ось список важливих параметрів та значення за замовчуванням. Цей список стосується останньої версії Java HotSpot VM, збірка 24. Ви можете адаптувати та налаштувати параметри G1 GC у командному рядку JVM.
Важливі значення за замовчуванням:
-XX:G1HeapRegionSize=n
Встановлює розмір області G1. Значення буде дорівнювати двом і може коливатися від 1 МБ до 32 МБ. Мета полягає в тому, щоб мати близько 2048 регіонів на основі мінімального розміру купи Java.
-XX:MaxGCPauseMillis=200
Встановлює цільове значення для бажаного максимального часу паузи. Значення за замовчуванням - 200 мілісекунд. Вказане значення не відповідає вашому розміру купи.
-XX:G1NewSizePercent=5
Встановлює відсоток купи, який слід використовувати як мінімальний для розміру молодого покоління. Значення за замовчуванням - 5 відсотків вашої купи Java.
-XX:G1MaxNewSizePercent=60
Встановлює відсоток розміру купи, який слід використовувати як максимальний для розміру молодого покоління. Значення за замовчуванням - 60 відсотків вашої купи Java.
-XX:ParallelGCThreads=n
Встановлює значення робочих потоків STW. Встановлює значення n на кількість логічних процесорів. Значення n таке саме, як кількість логічних процесорів до значення 8.
Якщо існує більше восьми логічних процесорів, встановлює значення n приблизно до 5/8 логічних процесорів. Це працює в більшості випадків, за винятком більших систем SPARC, де значення n може становити приблизно 5/16 логічних процесорів.
-XX:ConcGCThreads=n
Встановлює кількість паралельних ниток розмітки. Встановлює n приблизно до 1/4 кількості паралельних потоків збору сміття (ParallelGCThreads).
-XX:InitiatingHeapOccupancyPercent=45
Встановлює поріг заповнення кучі Java, який запускає цикл маркування. Заповнення за замовчуванням становить 45 відсотків всієї кучі Java.
-XX:G1MixedGCLiveThresholdPercent=65
Встановлює поріг заповнюваності для старого регіону, який повинен бути включений у змішаний цикл вивезення сміття. Зайнятість за замовчуванням становить 65 відсотків
-XX:G1HeapWastePercent=10
Встановлює відсоток купи, яку ви готові витратити. Java HotSpot VM не ініціює змішаний цикл вивезення сміття, коли відсотковий відсоток менше, ніж відсоток відвалів купи
-XX:G1MixedGCCountTarget=8
Встановлює цільову кількість змішаних зборів сміття після циклу розмітки для збору старих регіонів із щонайбільше G1MixedGCLIveThresholdPercent реальними даними. За замовчуванням - 8 змішаних сміттєвих колекцій
-XX:G1OldCSetRegionThresholdPercent=10
Встановлює верхню межу кількості старих регіонів, що збираються під час змішаного циклу збору сміття. За замовчуванням 10 відсотків купи Java
-XX:G1ReservePercent=10
Встановлює відсоток резервної пам'яті, щоб вона залишалася вільною, щоб зменшити ризик переповнення простору. За замовчуванням 10 відсотків. Коли ви збільшуєте або зменшуєте відсоток, переконайтеся, що загальну купу Java налаштовано на однакову величину.
Ви переконфігурували багато параметрів G1GC, які не потрібні, якщо ви дотримуєтесь вищезазначеної сторінки документації. Будь ласка, перевірте наведені вище рекомендації, особливо щодо ParallelGCThreads та ConcGCThreads , які мають базуватися на ядрах вашого процесора. Видалити повторну конфігурацію непотрібних параметрів.
Рекомендації від oracle:
Під час оцінки та точної настройки G1 GC пам’ятайте про наступні рекомендації:
Розмір молодого покоління : уникайте явного встановлення розміру молодого покоління за допомогою -Xmn
параметра чи будь-якого іншого суміжного параметра, наприклад -XX:NewRatio
. Визначення розміру молодого покоління замінює цільову мету часу паузи .
Пауза Цілі в часі: Коли ви оцінюєте або налаштовуєте будь-який збір сміття, завжди є затримка проти компромісу між пропускною спроможністю. G1 GC - це додатковий збирач сміття з рівномірними паузами, але також більшими накладними витратами на потоки додатків. Метою пропускної здатності для G1 GC є 90 відсотків часу нанесення та 10 відсотків часу збору сміття .
- Чи були внесені зміни до інших колекторів, таких як cms або паралельний колектор в Java 7?
У Java 7. є деякі зміни. Погляньте на цю статтю
- Де я можу знайти хорошу документацію щодо збору сміття в Java 7?
Зверніться до сторінки документації oracle про gc та відповідне питання про SE:
Виробництво сміття Java G1 у виробництві