7.1* Как да изберем правилния събирач на отпадъци
Ако вашето приложение няма строги изисквания за забавяне, трябва просто да стартирате приложението и да оставите JVM сама да избере правилния колектор.
В повечето случаи настройките по подразбиране работят добре. Ако е необходимо, можете да коригирате размера на купчината, за да подобрите производителността. Ако производителността все още не е според очакванията, опитайте да модифицирате колектора, за да отговаря на изискванията на вашето приложение.
- Последователен . Ако приложението има малък набор от данни (до около 100 MB) и/or ще работи на един процесор без ниHowви изисквания за забавяне.
- Паралелен . Ако приоритетът е пиковата производителност на приложението и няма изисквания за латентност (or паузите от една секунда or повече са приемливи).
- CMS/G1 . Ако времето за реакция е по-важно от общата пропускателна способност, паузите за събиране на отпадъци трябва да са по-кратки от една секунда.
- ZGC . Ако времето за реакция е с висок приоритет и/or е включена много голяма купчина.
7.2* Препоръки за събиране на боклука
Избягвайте ръчните задействания
В допълнение към основните механизми за събиране на отпадъци, един от най-важните моменти за този процес в Java е, че той не е детерминиран. Тоест, невъзможно е да се предвиди кога точно по време на изпълнение ще се случи.
С помощта на методите System.gc() or Runtime.gc() можете да включите подсказка в codeа си за стартиране на събирача на отпадъци, но това не гарантира, че той наистина ще работи.
Използвайте инструменти за анализ
Ако нямате достатъчно памет, за да изпълните приложението си, ще изпитате забавяне, дълги времена за събиране на боклук, събития на „спиране на света“ и евентуално грешки при недостиг на памет. Това може да показва, че купчината е твърде малка, но може също така да показва, че приложението има изтичане на памет.
Можете да използвате инструмент за наблюдение като jstat or Java Flight Recorder, за да видите дали използването на купчината нараства безкрайно, което може да означава грешка в codeа.
Предпочитайте настройките по подразбиране
Ако имате малко, самостоятелно Java приложение, вероятно няма да е необходимо да настройвате събиране на боклук. Настройките по подразбиране ще ви служат добре.
Използвайте JVM флагове за персонализиране
Най-добрият подход за настройка на събирането на боклук в Java е да зададете JVM флагове. Флаговете могат да се използват за задаване на събирача на отпадъци (например Serial, G1 и т.н.), началния и максималния размер на купчината, размера на дяловете на купчината (например младо поколение, старо поколение) и много Повече ▼.
Изберете правилния кран
Добра насока по отношение на първоначалните настройки е естеството на персонализираното приложение. Например паралелният събирач на боклук е ефективен, но често предизвиква събития „световно спиране“, което го прави по-подходящ за вътрешна обработка, където дългите паузи са приемливи.
В същото време CMS събирачът на отпадъци е проектиран да минимизира латентността, което го прави идеален за уеб applications, където отзивчивостта е важна.
GO TO FULL VERSION