Мабуть, нікому не секрет, що GC є дуже важливою річчю в JVM, і що вона займається звільненням памяті, що вже не використовуються. Також багатьом відомо, що є кілька різних політик виконання очистки пам'яті. Конфігурація не виглядає надто складною, є всього кілька можливих варіантів вибору політики GC:
- SerialGC - встановлена по дефолту, працює найкраще якщо на машині тільки один процесор, коли виконуєть збір сміття, то програма тормозить, адже в даний момент вона не відповідає.
- ParallelGC - використовується можливість виконувати мінорний (minor) збір сміття в паралельних потоках. Програма здатна відповідати на запити клієнта в момент збору сміття
- ParallelOldGC - виконує мажорний (major) збір сміття в паралельних потоках
- ConcMarkSweepGC - В даному випадку постійно відбувається збір сміття, програма не тормозить при зборах сміття, як це можна замітити в 3 попередніх випадках.
Таким чином, я вирішив переконфігурувати для прикладу IntellijIdea, що я використовую.
-Xms256m
-Xmx512m
-XX:MaxPermSize=120m
-XX:+UseConcMarkSweepGC
-ea
-Dawt.useSystemAAFontSettings=lcd
Для покращення швидкодії роботи, можна також установити значення ms = mx, так щоб
-Xms512m
-Xmx512m
-XX:MaxPermSize=120m
-XX:+UseConcMarkSweepGC
-ea
-Dawt.useSystemAAFontSettings=lcd
Ресурси
- Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning - із серії must-read
- Java HotSpot VM Options - якось давно шукав подібну документацію, тепер повезло більше - знашов.
- Tuning Garbage Collection Outline - цікава підбірка фактів про GC
No comments:
Post a Comment