தொடர் GC

குப்பை சேகரிப்பு, குவியல் குவியலில் இருந்து குறிப்பிடப்படாத பொருட்களை அகற்றி, புதிதாக உருவாக்கப்பட்ட பொருள்களுக்கு இடமளிப்பதன் மூலம் ஜாவாவில் நினைவக செயல்திறனை மேம்படுத்துகிறது.

ஜாவா மெய்நிகர் இயந்திரத்தில் எட்டு வகையான குப்பை சேகரிப்பான்கள் உள்ளன. அவை ஒவ்வொன்றையும் விரிவாகக் கருதுவோம்.

சீரியல் ஜிசி என்பது எளிமையான ஜிசி செயலாக்கமாகும். ஒற்றை-திரிக்கப்பட்ட சூழல்களில் இயங்கும் சிறிய பயன்பாடுகளுக்காக இது வடிவமைக்கப்பட்டுள்ளது. அனைத்து குப்பை சேகரிப்பு நிகழ்வுகளும் ஒரே நூலில் தொடர்ச்சியாக செயல்படுத்தப்படுகின்றன. ஒவ்வொரு குப்பை சேகரிப்புக்கும் பிறகு சுருக்கம் செய்யப்படுகிறது.

தொடர் GC

கலெக்டரை இயக்குவது "உலக நிறுத்தம்" நிகழ்வில் விளைகிறது, அங்கு முழு பயன்பாடும் இடைநிறுத்தப்படும். குப்பை சேகரிப்பின் போது முழு பயன்பாடும் முடக்கப்பட்டிருப்பதால், தாமதங்களை முடிந்தவரை குறைவாக வைத்திருக்க விரும்பினால், நிஜ வாழ்க்கையில் இதை நாடக்கூடாது.

தொடர் குப்பை சேகரிப்பாளரைப் பயன்படுத்துவதற்கான JVM வாதம் -XX:+UseSerialGC .

இணை ஜி.சி

மல்டித்ரெட் அல்லது மல்டிபிராசசர் வன்பொருளில் இயங்கும் நடுத்தர முதல் பெரிய தரவுத் தொகுப்புகளைக் கொண்ட பயன்பாடுகளுக்காக இணையான குப்பை சேகரிப்பான் வடிவமைக்கப்பட்டுள்ளது. இது இயல்புநிலை GC செயல்படுத்தல் ஆகும், மேலும் இது த்ரோபுட் சேகரிப்பான் என்றும் அழைக்கப்படுகிறது.

இளம் தலைமுறையினரிடம் சிறு குப்பை சேகரிப்புக்கு பல நூல்கள் விதிக்கப்பட்டுள்ளன. பழைய தலைமுறையின் முக்கிய குப்பை சேகரிப்பில் ஒரே நூல் பிஸியாக உள்ளது.

இணை ஜி.சி

இணையான ஜிசியை இயக்குவது உலகத்தை "நிறுத்துகிறது" மற்றும் பயன்பாடு செயலிழக்கச் செய்கிறது. இந்த நடத்தை பல-திரிக்கப்பட்ட சூழலுக்கு மிகவும் பொருத்தமானது, அங்கு பல பணிகள் முடிக்கப்பட வேண்டும் மற்றும் நீண்ட இடைநிறுத்தங்கள் ஏற்கத்தக்கவை, அதாவது ஒரு தொகுதி வேலையை இயக்கும்போது.

இணையான குப்பை சேகரிப்பாளரைப் பயன்படுத்துவதற்கான JVM வாதம் -XX:+UseParallelGC .

CMS GC

குறைந்த ஓய்வு இணை எடுப்பவர் என்றும் நமக்குத் தெரியும் .

இங்கே, ஒரு சிறிய குப்பை சேகரிப்புக்கு, பல நூல்கள் ஈடுபட்டுள்ளன, இது இணை சேகரிப்பாளரில் உள்ள அதே வழிமுறை மூலம் நிகழ்கிறது. முக்கிய குப்பை சேகரிப்பு பழைய இணையான ஜிசியைப் போலவே பல திரிக்கப்பட்டதாகும், ஆனால் CMS ஆனது "உலக நிறுத்தம்" நிகழ்வுகளைக் குறைக்க பயன்பாட்டு செயல்முறைகளுடன் ஒரே நேரத்தில் இயங்குகிறது.

CMS GC

இதன் காரணமாக, CMS சேகரிப்பான் மற்ற சேகரிப்பாளர்களை விட அதிக CPU ஐப் பயன்படுத்துகிறது. செயல்திறனை மேம்படுத்த அதிக CPU ஐ ஒதுக்கும் திறன் உங்களிடம் இருந்தால், ஒரு எளிய இணை சேகரிப்பாளரை விட CMS சிறந்தது. CMS GC கச்சிதமாக இல்லை.

இணையான மார்க்-ஸ்வீப் குப்பை சேகரிப்பாளரைப் பயன்படுத்துவதற்கான JVM வாதம் -XX:+UseConcMarkSweepGC ஆகும் .

G1 (குப்பை முதலில்) GC

G1GC ஆனது CMS க்கு மாற்றாகக் கருதப்பட்டது மற்றும் பெரிய குவியல் அளவுகளால் வகைப்படுத்தப்படும் (4 GB க்கும் அதிகமான) பல-திரிக்கப்பட்ட பயன்பாடுகளுக்காக உருவாக்கப்பட்டது. இது CMS போன்ற இணையான மற்றும் போட்டித்தன்மை வாய்ந்தது, ஆனால் பழைய குப்பை சேகரிப்பாளர்களை விட இது மிகவும் வித்தியாசமாக வேலை செய்கிறது.

G1 ஆனது ஒரு தலைமுறை அடிப்படையில் இயங்கினாலும், இளைய தலைமுறையினருக்கும் மூத்த தலைமுறையினருக்கும் தனித்தனி இடைவெளிகள் இல்லை. மாறாக, ஒவ்வொரு தலைமுறையும் பிராந்தியங்களின் தொகுப்பாகும், இளைய தலைமுறையின் அளவை மாற்றுவதில் நெகிழ்வுத்தன்மையை அனுமதிக்கிறது.

G1 குவியலை சம அளவிலான பகுதிகளின் தொகுப்பாகப் பிரித்து (குவியல் அளவைப் பொறுத்து) அவற்றை பல நூல்களாக ஸ்கேன் செய்கிறது. நிரல் செயல்படுத்தப்படும் போது பகுதி மீண்டும் மீண்டும் பழைய மற்றும் இளம் இருவரும் ஆக முடியும்.

மார்க்அப் கட்டம் முடிந்ததும், எந்தெந்த பகுதிகளில் அதிக குப்பைகள் உள்ளன என்பதை G1 அறியும். இடைநிறுத்தங்களைக் குறைப்பதில் பயனர் ஆர்வமாக இருந்தால், G1 ஆல் சில பகுதிகளை மட்டுமே தேர்ந்தெடுக்க முடியும். இடைநிறுத்த நேரம் பயனருக்கு முக்கியமில்லை என்றாலோ அல்லது இடைநிறுத்த நேர வரம்பை அதிகமாக அமைத்தாலோ G1 அதிகமான பகுதிகளுக்குச் செல்லும்.

G1 GC ஆனது அதிக குப்பை உள்ள பகுதிகளை அடையாளம் கண்டு, அந்த பகுதிகளில் முதலில் குப்பை சேகரிப்பை செய்வதால், அது "குப்பை முதலில்" என்று அழைக்கப்படுகிறது.

ஈடன், சர்வைவர்ஸ் மற்றும் ஓல்ட் மெமரி ஆகிய பகுதிகளைத் தவிர, G1GC இல் வேறு இரண்டு வகைகள் உள்ளன.

  • ஹூமோங்கஸ் (பெரிய) - பெரிய அளவிலான பொருட்களுக்கு (குவியல் அளவின் 50% க்கும் அதிகமானவை).
  • கிடைக்கும் - பயன்படுத்தப்படாத அல்லது ஒதுக்கப்படாத இடம்.

G1 குப்பை சேகரிப்பாளரைப் பயன்படுத்துவதற்கான JVM வாதம் -XX:+UseG1GC .

ஷெனாண்டோவா (சந்தாரா)

Shenandoah என்பது JDK 12 இன் ஒரு பகுதியாக வெளியிடப்பட்ட ஒரு புதிய GC ஆகும். G1 ஐ விட Shenandoah இன் முக்கிய நன்மை என்னவென்றால், பெரும்பாலான குப்பை சேகரிப்பு சுழற்சியானது பயன்பாட்டு நூல்களுடன் ஒரே நேரத்தில் செய்யப்படுகிறது. பயன்பாடு இடைநிறுத்தப்படும் போது மட்டுமே G1 குவியல் பகுதிகளை காலி செய்ய முடியும், அதே நேரத்தில் ஷெனாண்டோ ஆப்ஸைப் பயன்படுத்தும் அதே நேரத்தில் பொருட்களை நகர்த்துகிறது.

ஷெனாண்டோவா நேரடியான பொருட்களை சுருக்கவும், குப்பைகளை சுத்தம் செய்யவும் மற்றும் இலவச நினைவகம் கண்டறியப்பட்டவுடன் ரேமை விடுவிக்கவும் முடியும். இவை அனைத்தும் ஒரே நேரத்தில் நடப்பதால், பயன்பாட்டை இடைநிறுத்தாமல், Shenandoah அதிக CPU தீவிரமானது.

ஷெனாண்டோவா குப்பை சேகரிப்பாளருக்கான JVM வாதம்: -XX:+திறத்தல் பரிசோதனைVMOptions -XX:+ShenandoahGC பயன்படுத்தவும் .

ZGC

ZGC என்பது JDK 11 இன் ஒரு பகுதியாக வெளியிடப்பட்டது மற்றும் JDK 12 இல் மேம்படுத்தப்பட்ட மற்றொரு GC ஆகும்.

இது வேகம் மற்றும் குறைந்த தாமதம் (10 ms க்கும் குறைவான இடைநிறுத்தங்கள்) மற்றும்/அல்லது மிகப் பெரிய குவியல் (பல டெராபைட்கள்) தேவைப்படும் பயன்பாடுகளுக்காக வடிவமைக்கப்பட்டுள்ளது.

ZGC இன் முக்கிய குறிக்கோள்கள் குறைந்த தாமதம், அளவிடுதல் மற்றும் பயன்பாட்டின் எளிமை. இதைச் செய்ய, குப்பை சேகரிப்பு நடவடிக்கைகள் நடந்துகொண்டிருந்தாலும், ஜாவா பயன்பாட்டைத் தொடர்ந்து இயங்க அனுமதிக்கிறது. முன்னிருப்பாக, ZGC பயன்படுத்தப்படாத நினைவகத்தை வெளியிடுகிறது மற்றும் அதை இயக்க முறைமைக்கு திருப்பித் தருகிறது.

எனவே, ZGC மற்ற பாரம்பரிய GCகளை விட மிகக் குறைந்த இறந்த நேரங்களை வழங்குவதன் மூலம் குறிப்பிடத்தக்க முன்னேற்றத்தைக் கொண்டுவருகிறது (பொதுவாக 2msக்குள்).

ZGC இன் முக்கிய நோக்கங்கள் 

ZGC குப்பை சேகரிப்பாளரைப் பயன்படுத்துவதற்கான JVM வாதம் -XX:+அன்லாக் பரிசோதனைVMOptions -XX:+UseZGC .