தமிழ்

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

நினைவக மேலாண்மை: குப்பை சேகரிப்பு உத்திகளில் ஒரு ஆழமான பார்வை

நினைவக மேலாண்மை என்பது மென்பொருள் மேம்பாட்டின் ஒரு முக்கியமான அம்சமாகும், இது பயன்பாட்டின் செயல்திறன், நிலைத்தன்மை மற்றும் அளவிடுதல் ஆகியவற்றை நேரடியாக பாதிக்கிறது. திறமையான நினைவக மேலாண்மை, பயன்பாடுகள் வளங்களை திறம்பட பயன்படுத்துவதை உறுதிசெய்கிறது, நினைவக கசிவுகள் மற்றும் செயலிழப்புகளைத் தடுக்கிறது. கையேடு நினைவக மேலாண்மை (எ.கா., C அல்லது C++ இல்) நுணுக்கமான கட்டுப்பாட்டை வழங்கினாலும், அது குறிப்பிடத்தக்க சிக்கல்களுக்கு வழிவகுக்கும் பிழைகளுக்கு ஆளாகிறது. தானியங்கி நினைவக மேலாண்மை, குறிப்பாக குப்பை சேகரிப்பு (GC) மூலம், ஒரு பாதுகாப்பான மற்றும் மிகவும் வசதியான மாற்றீட்டை வழங்குகிறது. இந்தக் கட்டுரை குப்பை சேகரிப்பு உலகிற்குள் ஆழமாகச் சென்று, பல்வேறு உத்திகளையும் உலகெங்கிலும் உள்ள டெவலப்பர்களுக்கான அதன் தாக்கங்களையும் ஆராய்கிறது.

குப்பை சேகரிப்பு என்றால் என்ன?

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

குப்பை சேகரிப்பு ஏன் முக்கியமானது?

குப்பை சேகரிப்பு மென்பொருள் மேம்பாட்டில் பல முக்கியமான கவலைகளை நிவர்த்தி செய்கிறது:

பொதுவான குப்பை சேகரிப்பு உத்திகள்

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

1. ரெஃபரன்ஸ் கவுண்டிங் (Reference Counting)

இது எப்படி வேலை செய்கிறது: ரெஃபரன்ஸ் கவுண்டிங் என்பது ஒரு எளிய குப்பை சேகரிப்பு உத்தியாகும், இதில் ஒவ்வொரு பொருளும் அதைக் குறிக்கும் குறிப்புகளின் எண்ணிக்கையை பராமரிக்கிறது. ஒரு பொருள் உருவாக்கப்படும்போது, அதன் குறிப்பு எண்ணிக்கை 1 ஆக அமைக்கப்படுகிறது. பொருளுக்கு ஒரு புதிய குறிப்பு உருவாக்கப்படும்போது, எண்ணிக்கை அதிகரிக்கப்படுகிறது. ஒரு குறிப்பு அகற்றப்படும்போது, எண்ணிக்கை குறைக்கப்படுகிறது. குறிப்பு எண்ணிக்கை பூஜ்ஜியத்தை அடையும்போது, நிரலில் உள்ள வேறு எந்த பொருள்களும் அந்த பொருளைக் குறிப்பிடவில்லை என்று அர்த்தம், மேலும் அதன் நினைவகத்தை பாதுகாப்பாக மீட்டெடுக்க முடியும்.

நன்மைகள்:

குறைபாடுகள்:

எடுத்துக்காட்டு: பைத்தான் பல ஆண்டுகளாக அதன் முதன்மை குப்பை சேகரிப்பு பொறிமுறையாக ரெஃபரன்ஸ் கவுண்டிங்கைப் பயன்படுத்தியது. இருப்பினும், சுழற்சி குறிப்புகளின் சிக்கலைத் தீர்க்க இது ஒரு தனி சுழற்சி கண்டறிவானையும் கொண்டுள்ளது.

2. மார்க் மற்றும் ஸ்வீப் (Mark and Sweep)

இது எப்படி வேலை செய்கிறது: மார்க் மற்றும் ஸ்வீப் என்பது இரண்டு கட்டங்களைக் கொண்ட ஒரு நுட்பமான குப்பை சேகரிப்பு உத்தியாகும்:

நன்மைகள்:

குறைபாடுகள்:

எடுத்துக்காட்டு: ஜாவா (சில செயலாக்கங்களில்), ஜாவாஸ்கிரிப்ட் மற்றும் ரூபி உள்ளிட்ட பல மொழிகள், மார்க் மற்றும் ஸ்வீப்பை அவற்றின் குப்பை சேகரிப்பு செயலாக்கத்தின் ஒரு பகுதியாகப் பயன்படுத்துகின்றன.

3. தலைமுறை குப்பை சேகரிப்பு (Generational Garbage Collection)

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

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

நன்மைகள்:

குறைபாடுகள்:

எடுத்துக்காட்டு: ஜாவாவின் HotSpot JVM, G1 (Garbage First) மற்றும் CMS (Concurrent Mark Sweep) போன்ற பல்வேறு குப்பை சேகரிப்பான்களுடன் தலைமுறை குப்பை சேகரிப்பை விரிவாகப் பயன்படுத்துகிறது, அவை வெவ்வேறு தலைமுறை உத்திகளை செயல்படுத்துகின்றன.

4. நகலெடுக்கும் குப்பை சேகரிப்பு (Copying Garbage Collection)

இது எப்படி வேலை செய்கிறது: நகலெடுக்கும் குப்பை சேகரிப்பு ஹீப்பை இரண்டு சம அளவிலான பகுதிகளாகப் பிரிக்கிறது: ஃபிரம்-ஸ்பேஸ் மற்றும் டு-ஸ்பேஸ். பொருள்கள் ஆரம்பத்தில் ஃபிரம்-ஸ்பேஸில் ஒதுக்கப்படுகின்றன. ஃபிரம்-ஸ்பேஸ் நிரம்பும்போது, குப்பை சேகரிப்பான் அனைத்து உயிருள்ள பொருள்களையும் ஃபிரம்-ஸ்பேஸிலிருந்து டு-ஸ்பேஸுக்கு நகலெடுக்கிறது. நகலெடுத்த பிறகு, ஃபிரம்-ஸ்பேஸ் புதிய டு-ஸ்பேஸாகவும், டு-ஸ்பேஸ் புதிய ஃபிரம்-ஸ்பேஸாகவும் மாறுகிறது. பழைய ஃபிரம்-ஸ்பேஸ் இப்போது காலியாகவும் புதிய ஒதுக்கீடுகளுக்கு தயாராகவும் உள்ளது.

நன்மைகள்:

குறைபாடுகள்:

எடுத்துக்காட்டு: நகலெடுக்கும் குப்பை சேகரிப்பு பெரும்பாலும் மற்ற குப்பை சேகரிப்பு உத்திகளுடன், குறிப்பாக தலைமுறை குப்பை சேகரிப்பான்களின் இளம் தலைமுறையில் பயன்படுத்தப்படுகிறது.

5. ஒரே நேரத்தில் மற்றும் இணையான குப்பை சேகரிப்பு (Concurrent and Parallel Garbage Collection)

இது எப்படி வேலை செய்கிறது: இந்த உத்திகள், குப்பை சேகரிப்பை பயன்பாட்டின் செயலாக்கத்துடன் ஒரே நேரத்தில் (concurrent GC) அல்லது குப்பை சேகரிப்பை இணையாகச் செய்ய பல திரெட்களைப் பயன்படுத்தி (parallel GC) செய்வதன் மூலம் குப்பை சேகரிப்பு இடைநிறுத்தங்களின் தாக்கத்தைக் குறைக்க முயல்கின்றன.

நன்மைகள்:

குறைபாடுகள்:

எடுத்துக்காட்டு: ஜாவாவின் CMS (Concurrent Mark Sweep) மற்றும் G1 (Garbage First) சேகரிப்பான்கள் ஒரே நேரத்தில் மற்றும் இணையான குப்பை சேகரிப்பான்களுக்கு எடுத்துக்காட்டுகள் ஆகும்.

சரியான குப்பை சேகரிப்பு உத்தியைத் தேர்ந்தெடுத்தல்

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

பின்வரும் சூழ்நிலைகளைக் கவனியுங்கள்:

டெவலப்பர்களுக்கான நடைமுறைப் பரிந்துரைகள்

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

பல்வேறு நிரலாக்க மொழிகளில் எடுத்துக்காட்டுகள்

ஒரு சில பிரபலமான நிரலாக்க மொழிகளில் குப்பை சேகரிப்பு எவ்வாறு கையாளப்படுகிறது என்பதைக் கருத்தில் கொள்வோம்:

குப்பை சேகரிப்பின் எதிர்காலம்

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

முடிவுரை

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

நினைவக மேலாண்மை: குப்பை சேகரிப்பு உத்திகளில் ஒரு ஆழமான பார்வை | MLOG