Jei norite sutrumpinti vidutinį šiukšlių surinkimo pristabdymo laiką CI / CD vamzdyne, galite atlikti šiuos veiksmus:
1. Optimizuokite šiukšlių surinkimo nustatymus:
- Padidinkite jaunosios kartos dydį:- Padidinti jaunosios kartos skaičių, kad būtų sumažintas šiukšlių surinkimo dažnis.
- Tai galima padaryti nustatant JVM argumentą „-Xmn“ arba „-XX:NewRatio“.
- Sureguliuokite šiukšlių surinkimo intervalą:
- Sureguliuokite šiukšlių surinkimo intervalą, kad sumažintumėte pauzės laiką.
– Tai galima padaryti nustatant JVM argumentą „-Dsun.rmi.dgc.server.gcInterval“ arba „-Dsun.rmi.dgc.client.gcInterval“.
2. Stebėkite ir analizuokite šiukšlių surinkimą:
– Naudokite šiukšlių surinkimo profiliavimo priemones:- Norėdami stebėti ir analizuoti šiukšlių surinkimą, naudokite tokius įrankius kaip JProfiler, YourKit arba JVisualVM.
- Šie įrankiai gali padėti nustatyti atminties nutekėjimą, optimizuoti objektų kūrimo greitį ir sumažinti šiukšlių surinkimo pauzės laiką.
3. Optimizuokite objektų kūrimo rodiklius:
- Sumažinti objektų kūrimą:- Sumažinkite objektų kūrimo jūsų programoje greitį.
- Tai galima padaryti optimizuojant kodą, kad būtų sukurta mažiau objektų, arba naudojant talpyklos mechanizmus.
4. Naudokite kartu atliekamą šiukšlių surinkimą:
– Įgalinti vienu metu vykstantį šiukšlių surinkimą:- Įgalinkite šiukšlių rinkimą vienu metu, kad sumažintumėte pauzės laiką.
– Tai galima padaryti nustatant JVM argumentą „-XX:+UseConcMarkSweepGC“.
5. Stebėkite ir optimizuokite atminties naudojimą:
- Stebėti atminties naudojimą:- Stebėkite atminties naudojimą, kad nustatytumėte atminties nutekėjimą ir optimizuotumėte atminties naudojimą.
- Tai galima padaryti naudojant tokius įrankius kaip VisualVM arba GCeasy.
6. Išbandyti ir patikslinti:
- Išbandyti ir patikslinti nustatymus:- Išbandykite ir patobulinkite šiukšlių surinkimo nustatymus, kad pasiektumėte optimalų našumą.
- Tai galima padaryti paleidus programą, kai ji yra įkelta, ir stebint šiukšlių surinkimo pauzės laiką.
Atlikdami šiuos veiksmus, galite sumažinti vidutinį šiukšlių surinkimo pauzės laiką CI / CD vamzdyne ir užtikrinti efektyvų programos veikimą.
Citatos:[1] https://www.dynatrace.com/resources/ebooks/javabook/reduce-garbage-collection-pause-time/
[2] https://blog.heaphero.io/2018/07/10/micrometrics-for-ci-cd-pipeline/
[3] https://dzone.com/articles/how-to-reduce-long-gc-pause
[4] https://blog.gceasy.io/2018/07/10/micrometrics-for-ci-cd-pipeline/
[5] https://github.com/cypress-io/cypress/issues/8525