ലോകമെമ്പാടുമുള്ള മെമ്മറി മാനേജ്മെന്റിനും ആപ്ലിക്കേഷൻ പ്രകടനത്തിനും നിർണായകമായ ആധുനിക റൺടൈം സിസ്റ്റങ്ങളെ ശക്തിപ്പെടുത്തുന്ന അടിസ്ഥാന ഗാർബേജ് കളക്ഷൻ അൽഗോരിതങ്ങൾ പര്യവേക്ഷണം ചെയ്യുക.
റൺടൈം സിസ്റ്റങ്ങൾ: ഗാർബേജ് കളക്ഷൻ അൽഗോരിതങ്ങളെക്കുറിച്ചുള്ള ഒരു ആഴത്തിലുള്ള പഠനം
കമ്പ്യൂട്ടിംഗിന്റെ സങ്കീർണ്ണമായ ലോകത്ത്, നമ്മുടെ സോഫ്റ്റ്വെയറുകൾക്ക് ജീവൻ നൽകുന്ന അദൃശ്യ എഞ്ചിനുകളാണ് റൺടൈം സിസ്റ്റങ്ങൾ. അവ വിഭവങ്ങൾ കൈകാര്യം ചെയ്യുകയും കോഡ് എക്സിക്യൂട്ട് ചെയ്യുകയും ആപ്ലിക്കേഷനുകളുടെ സുഗമമായ പ്രവർത്തനം ഉറപ്പാക്കുകയും ചെയ്യുന്നു. പല ആധുനിക റൺടൈം സിസ്റ്റങ്ങളുടെയും ഹൃദയഭാഗത്ത് ഒരു നിർണായക ഘടകമുണ്ട്: ഗാർബേജ് കളക്ഷൻ (GC). ആപ്ലിക്കേഷൻ ഉപയോഗിക്കാത്ത മെമ്മറി സ്വയമേവ വീണ്ടെടുക്കുന്ന പ്രക്രിയയാണ് ജിസി. ഇത് മെമ്മറി ലീക്കുകൾ തടയുകയും വിഭവങ്ങളുടെ കാര്യക്ഷമമായ ഉപയോഗം ഉറപ്പാക്കുകയും ചെയ്യുന്നു.
ലോകമെമ്പാടുമുള്ള ഡെവലപ്പർമാർക്ക്, ജിസി മനസ്സിലാക്കുന്നത് വൃത്തിയുള്ള കോഡ് എഴുതുന്നതിനെക്കുറിച്ച് മാത്രമല്ല; ഇത് കരുത്തുറ്റതും മികച്ച പ്രകടനം കാഴ്ചവെക്കുന്നതും വികസിപ്പിക്കാവുന്നതുമായ ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കുന്നതിനെക്കുറിച്ചാണ്. ഈ സമഗ്രമായ പര്യവേക്ഷണം ഗാർബേജ് കളക്ഷനെ ശക്തിപ്പെടുത്തുന്ന പ്രധാന ആശയങ്ങളിലേക്കും വിവിധ അൽഗോരിതങ്ങളിലേക്കും ആഴ്ന്നിറങ്ങും. ഇത് വിവിധ സാങ്കേതിക പശ്ചാത്തലങ്ങളിൽ നിന്നുള്ള പ്രൊഫഷണലുകൾക്ക് വിലപ്പെട്ട ഉൾക്കാഴ്ചകൾ നൽകും.
മെമ്മറി മാനേജ്മെന്റിന്റെ അനിവാര്യത
നിർദ്ദിഷ്ട അൽഗോരിതങ്ങളിലേക്ക് കടക്കുന്നതിന് മുമ്പ്, മെമ്മറി മാനേജ്മെന്റ് എന്തുകൊണ്ട് ഇത്ര നിർണായകമാണെന്ന് മനസ്സിലാക്കേണ്ടത് അത്യാവശ്യമാണ്. പരമ്പരാഗത പ്രോഗ്രാമിംഗ് മാതൃകകളിൽ, ഡെവലപ്പർമാർ സ്വമേധയാ മെമ്മറി അനുവദിക്കുകയും നീക്കം ചെയ്യുകയും ചെയ്യുന്നു. ഇത് സൂക്ഷ്മമായ നിയന്ത്രണം നൽകുന്നുണ്ടെങ്കിലും, ഇത് ബഗുകളുടെ കുപ്രസിദ്ധമായ ഉറവിടം കൂടിയാണ്:
- മെമ്മറി ലീക്കുകൾ: അനുവദിച്ച മെമ്മറിക്ക് ഇനി ആവശ്യമില്ലെങ്കിലും വ്യക്തമായി ഡീലോക്കേറ്റ് ചെയ്തിട്ടില്ലെങ്കിൽ, അത് ഉപയോഗിക്കപ്പെട്ടുകൊണ്ടിരിക്കും, ഇത് ലഭ്യമായ മെമ്മറിയുടെ ക്രമേണയുള്ള ശോഷണത്തിലേക്ക് നയിക്കുന്നു. കാലക്രമേണ, ഇത് ആപ്ലിക്കേഷൻ വേഗത കുറയുന്നതിനോ അല്ലെങ്കിൽ പൂർണ്ണമായി ക്രാഷാകുന്നതിനോ കാരണമാകും.
- ഡാംഗ്ലിംഗ് പോയിന്ററുകൾ: മെമ്മറി ഡീലോക്കേറ്റ് ചെയ്യുകയും, എന്നാൽ ഒരു പോയിന്റർ ഇപ്പോഴും അതിനെ റഫർ ചെയ്യുകയും ചെയ്യുന്നുവെങ്കിൽ, ആ മെമ്മറി ആക്സസ് ചെയ്യാൻ ശ്രമിക്കുന്നത് അനിർവചനീയമായ സ്വഭാവത്തിന് കാരണമാകുന്നു. ഇത് പലപ്പോഴും സുരക്ഷാ വീഴ്ചകളിലേക്കോ ക്രാഷുകളിലേക്കോ നയിക്കുന്നു.
- ഡബിൾ ഫ്രീ എററുകൾ: ഇതിനകം ഡീലോക്കേറ്റ് ചെയ്ത മെമ്മറി വീണ്ടും ഡീലോക്കേറ്റ് ചെയ്യുന്നത് ഡാറ്റാ നഷ്ടത്തിനും അസ്ഥിരതയ്ക്കും കാരണമാകുന്നു.
ഗാർബേജ് കളക്ഷനിലൂടെയുള്ള ഓട്ടോമാറ്റിക് മെമ്മറി മാനേജ്മെന്റ് ഈ ഭാരങ്ങൾ ലഘൂകരിക്കാൻ ലക്ഷ്യമിടുന്നു. ഉപയോഗിക്കാത്ത മെമ്മറി കണ്ടെത്തുകയും വീണ്ടെടുക്കുകയും ചെയ്യുന്നതിന്റെ ഉത്തരവാദിത്തം റൺടൈം സിസ്റ്റം ഏറ്റെടുക്കുന്നു. ഇത് ഡെവലപ്പർമാരെ ലോ-ലെവൽ മെമ്മറി കൃത്രിമത്വത്തിനുപകരം ആപ്ലിക്കേഷൻ ലോജിക്കിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ അനുവദിക്കുന്നു. വൈവിധ്യമാർന്ന ഹാർഡ്വെയർ കഴിവുകളും വിന്യാസ സാഹചര്യങ്ങളും ഉള്ള ആഗോള പശ്ചാത്തലത്തിൽ, കാര്യക്ഷമവും പ്രതിരോധശേഷിയുള്ളതുമായ സോഫ്റ്റ്വെയറുകൾക്ക് ഇത് വളരെ പ്രധാനമാണ്.
ഗാർബേജ് കളക്ഷനിലെ പ്രധാന ആശയങ്ങൾ
എല്ലാ ഗാർബേജ് കളക്ഷൻ അൽഗോരിതങ്ങളെയും പിന്തുണയ്ക്കുന്ന നിരവധി അടിസ്ഥാന ആശയങ്ങളുണ്ട്:
1. റീച്ചബിലിറ്റി (ലഭ്യത)
മിക്ക ജിസി അൽഗോരിതങ്ങളുടെയും പ്രധാന തത്വം റീച്ചബിലിറ്റി ആണ്. അറിയപ്പെടുന്ന, "ലൈവ്" റൂട്ടുകളുടെ ഒരു കൂട്ടത്തിൽ നിന്ന് ഒരു ഒബ്ജക്റ്റിലേക്ക് ഒരു പാതയുണ്ടെങ്കിൽ അത് ലഭ്യമായതായി കണക്കാക്കപ്പെടുന്നു. റൂട്ടുകളിൽ സാധാരണയായി ഇവ ഉൾപ്പെടുന്നു:
- ഗ്ലോബൽ വേരിയബിളുകൾ
- എക്സിക്യൂഷൻ സ്റ്റാക്കിലെ ലോക്കൽ വേരിയബിളുകൾ
- സിപിയു രജിസ്റ്ററുകൾ
- സ്റ്റാറ്റിക് വേരിയബിളുകൾ
ഈ റൂട്ടുകളിൽ നിന്ന് എത്താൻ കഴിയാത്ത ഏതൊരു ഒബ്ജക്റ്റും ഗാർബേജ് ആയി കണക്കാക്കുകയും അത് വീണ്ടെടുക്കാൻ കഴിയുകയും ചെയ്യും.
2. ഗാർബേജ് കളക്ഷൻ സൈക്കിൾ
ഒരു സാധാരണ ജിസി സൈക്കിളിൽ നിരവധി ഘട്ടങ്ങൾ ഉൾപ്പെടുന്നു:
- മാർക്കിംഗ്: ജിസി റൂട്ടുകളിൽ നിന്ന് ആരംഭിച്ച് ഒബ്ജക്റ്റ് ഗ്രാഫിലൂടെ സഞ്ചരിച്ച്, ലഭ്യമായ എല്ലാ ഒബ്ജക്റ്റുകളും അടയാളപ്പെടുത്തുന്നു.
- സ്വീപ്പിംഗ് (അല്ലെങ്കിൽ കോംപാക്റ്റിംഗ്): മാർക്ക് ചെയ്ത ശേഷം, ജിസി മെമ്മറിയിലൂടെ സഞ്ചരിക്കുന്നു. അടയാളപ്പെടുത്താത്ത ഒബ്ജക്റ്റുകൾ (ഗാർബേജ്) വീണ്ടെടുക്കപ്പെടുന്നു. ചില അൽഗോരിതങ്ങളിൽ, ഫ്രാഗ്മെന്റേഷൻ കുറയ്ക്കുന്നതിന്, ലഭ്യമായ ഒബ്ജക്റ്റുകളെ അടുത്തടുത്തുള്ള മെമ്മറി ലൊക്കേഷനുകളിലേക്ക് (കോംപാക്ഷൻ) മാറ്റുകയും ചെയ്യുന്നു.
3. പോസുകൾ (ഇടവേളകൾ)
ജിസിയിലെ ഒരു പ്രധാന വെല്ലുവിളി സ്റ്റോപ്പ്-ദി-വേൾഡ് (STW) പോസുകളുടെ സാധ്യതയാണ്. ഈ ഇടവേളകളിൽ, തടസ്സമില്ലാതെ ജിസിക്ക് അതിന്റെ പ്രവർത്തനങ്ങൾ നടത്താൻ അനുവദിക്കുന്നതിന് ആപ്ലിക്കേഷന്റെ എക്സിക്യൂഷൻ നിർത്തിവയ്ക്കുന്നു. ദൈർഘ്യമേറിയ STW പോസുകൾ ആപ്ലിക്കേഷന്റെ പ്രതികരണശേഷിയെ കാര്യമായി ബാധിക്കും, ഇത് ഏതൊരു ആഗോള വിപണിയിലെയും ഉപയോക്തൃ-അധിഷ്ഠിത ആപ്ലിക്കേഷനുകൾക്ക് ഒരു പ്രധാന ആശങ്കയാണ്.
പ്രധാന ഗാർബേജ് കളക്ഷൻ അൽഗോരിതങ്ങൾ
വർഷങ്ങളായി, വിവിധ ജിസി അൽഗോരിതങ്ങൾ വികസിപ്പിച്ചെടുത്തിട്ടുണ്ട്, ഓരോന്നിനും അതിന്റേതായ ഗുണങ്ങളും ദോഷങ്ങളുമുണ്ട്. ഏറ്റവും പ്രചാരമുള്ള ചിലത് നമ്മൾ ഇവിടെ പര്യവേക്ഷണം ചെയ്യും:
1. മാർക്ക്-ആൻഡ്-സ്വീപ്പ്
ഏറ്റവും പഴയതും അടിസ്ഥാനപരവുമായ ജിസി ടെക്നിക്കുകളിൽ ഒന്നാണ് മാർക്ക്-ആൻഡ്-സ്വീപ്പ് അൽഗോരിതം. ഇത് രണ്ട് വ്യത്യസ്ത ഘട്ടങ്ങളിലായാണ് പ്രവർത്തിക്കുന്നത്:
- മാർക്ക് ഘട്ടം: ജിസി റൂട്ട് സെറ്റിൽ നിന്ന് ആരംഭിച്ച് മുഴുവൻ ഒബ്ജക്റ്റ് ഗ്രാഫിലൂടെയും സഞ്ചരിക്കുന്നു. കണ്ടുമുട്ടുന്ന എല്ലാ ഒബ്ജക്റ്റുകളും അടയാളപ്പെടുത്തുന്നു.
- സ്വീപ്പ് ഘട്ടം: തുടർന്ന് ജിസി മുഴുവൻ ഹീപ്പും സ്കാൻ ചെയ്യുന്നു. അടയാളപ്പെടുത്തിയിട്ടില്ലാത്ത ഏതൊരു ഒബ്ജക്റ്റും ഗാർബേജ് ആയി കണക്കാക്കുകയും അത് വീണ്ടെടുക്കുകയും ചെയ്യുന്നു. വീണ്ടെടുത്ത മെമ്മറി ഭാവിയിലെ അലോക്കേഷനുകൾക്കായി ഒരു ഫ്രീ ലിസ്റ്റിലേക്ക് ചേർക്കുന്നു.
ഗുണങ്ങൾ:
- ആശയപരമായി ലളിതവും വ്യാപകമായി മനസ്സിലാക്കാവുന്നതുമാണ്.
- സൈക്ലിക് ഡാറ്റാ ഘടനകളെ ഫലപ്രദമായി കൈകാര്യം ചെയ്യുന്നു.
ദോഷങ്ങൾ:
- പ്രകടനം: മുഴുവൻ ഹീപ്പിലൂടെയും സഞ്ചരിക്കുകയും എല്ലാ മെമ്മറിയും സ്കാൻ ചെയ്യുകയും ചെയ്യേണ്ടതിനാൽ വേഗത കുറവായിരിക്കാം.
- ഫ്രാഗ്മെന്റേഷൻ: ഒബ്ജക്റ്റുകൾ വ്യത്യസ്ത സ്ഥലങ്ങളിൽ അനുവദിക്കുകയും ഡീലോക്കേറ്റ് ചെയ്യുകയും ചെയ്യുമ്പോൾ മെമ്മറി ഫ്രാഗ്മെന്റ് ആകുന്നു, ഇത് മൊത്തത്തിൽ ആവശ്യത്തിന് ഫ്രീ മെമ്മറി ഉണ്ടെങ്കിലും അലോക്കേഷൻ പരാജയങ്ങൾക്ക് കാരണമായേക്കാം.
- STW പോസുകൾ: സാധാരണയായി നീണ്ട സ്റ്റോപ്പ്-ദി-വേൾഡ് പോസുകൾ ഉൾപ്പെടുന്നു, പ്രത്യേകിച്ചും വലിയ ഹീപ്പുകളിൽ.
ഉദാഹരണം: ജാവയുടെ ഗാർബേജ് കളക്ടറുടെ ആദ്യകാല പതിപ്പുകൾ ഒരു അടിസ്ഥാന മാർക്ക്-ആൻഡ്-സ്വീപ്പ് സമീപനം ഉപയോഗിച്ചിരുന്നു.
2. മാർക്ക്-ആൻഡ്-കോംപാക്റ്റ്
മാർക്ക്-ആൻഡ്-സ്വീപ്പിന്റെ ഫ്രാഗ്മെന്റേഷൻ പ്രശ്നം പരിഹരിക്കുന്നതിന്, മാർക്ക്-ആൻഡ്-കോംപാക്റ്റ് അൽഗോരിതം ഒരു മൂന്നാം ഘട്ടം ചേർക്കുന്നു:
- മാർക്ക് ഘട്ടം: മാർക്ക്-ആൻഡ്-സ്വീപ്പിന് സമാനമായി, ഇത് ലഭ്യമായ എല്ലാ ഒബ്ജക്റ്റുകളും അടയാളപ്പെടുത്തുന്നു.
- കോംപാക്റ്റ് ഘട്ടം: അടയാളപ്പെടുത്തിയ ശേഷം, ജിസി എല്ലാ മാർക്ക് ചെയ്ത (ലഭ്യമായ) ഒബ്ജക്റ്റുകളെയും തുടർച്ചയായ മെമ്മറി ബ്ലോക്കുകളിലേക്ക് മാറ്റുന്നു. ഇത് ഫ്രാഗ്മെന്റേഷൻ ഇല്ലാതാക്കുന്നു.
- സ്വീപ്പ് ഘട്ടം: തുടർന്ന് ജിസി മെമ്മറിയിലൂടെ സ്വീപ്പ് ചെയ്യുന്നു. ഒബ്ജക്റ്റുകൾ കോംപാക്റ്റ് ചെയ്തതിനാൽ, ഫ്രീ മെമ്മറി ഇപ്പോൾ ഹീപ്പിന്റെ അവസാനത്തിൽ ഒരൊറ്റ തുടർച്ചയായ ബ്ലോക്കാണ്, ഇത് ഭാവിയിലെ അലോക്കേഷനുകളെ വളരെ വേഗത്തിലാക്കുന്നു.
ഗുണങ്ങൾ:
- മെമ്മറി ഫ്രാഗ്മെന്റേഷൻ ഇല്ലാതാക്കുന്നു.
- വേഗതയേറിയ തുടർന്നുള്ള അലോക്കേഷനുകൾ.
- സൈക്ലിക് ഡാറ്റാ ഘടനകളെ ഇപ്പോഴും കൈകാര്യം ചെയ്യുന്നു.
ദോഷങ്ങൾ:
- പ്രകടനം: കോംപാക്ഷൻ ഘട്ടം കമ്പ്യൂട്ടേഷണലായി ചെലവേറിയതാകാം, കാരണം ഇതിന് മെമ്മറിയിൽ ധാരാളം ഒബ്ജക്റ്റുകൾ നീക്കേണ്ടി വരുന്നു.
- STW പോസുകൾ: ഒബ്ജക്റ്റുകൾ നീക്കേണ്ടതിനാൽ ഇപ്പോഴും കാര്യമായ STW പോസുകൾ ഉണ്ടാകുന്നു.
ഉദാഹരണം: ഈ സമീപനം കൂടുതൽ വികസിതമായ പല കളക്ടർമാർക്കും അടിസ്ഥാനമാണ്.
3. കോപ്പിയിംഗ് ഗാർബേജ് കളക്ഷൻ
കോപ്പിയിംഗ് ജിസി ഹീപ്പിനെ രണ്ട് സ്പേസുകളായി വിഭജിക്കുന്നു: ഫ്രം-സ്പേസ്, ടു-സ്പേസ്. സാധാരണയായി, പുതിയ ഒബ്ജക്റ്റുകൾ ഫ്രം-സ്പേസിൽ അനുവദിക്കുന്നു.
- കോപ്പിയിംഗ് ഘട്ടം: ജിസി പ്രവർത്തനക്ഷമമാകുമ്പോൾ, ജിസി ഫ്രം-സ്പേസിലൂടെ സഞ്ചരിക്കുന്നു, റൂട്ടുകളിൽ നിന്ന് ആരംഭിച്ച്. ലഭ്യമായ ഒബ്ജക്റ്റുകൾ ഫ്രം-സ്പേസിൽ നിന്ന് ടു-സ്പേസിലേക്ക് പകർത്തുന്നു.
- സ്വാപ്പ് സ്പേസുകൾ: ലഭ്യമായ എല്ലാ ഒബ്ജക്റ്റുകളും പകർത്തിക്കഴിഞ്ഞാൽ, ഫ്രം-സ്പേസിൽ ഗാർബേജ് മാത്രമേ ഉണ്ടാകൂ, കൂടാതെ ടു-സ്പേസിൽ എല്ലാ ലൈവ് ഒബ്ജക്റ്റുകളും ഉണ്ടാകും. തുടർന്ന് സ്പേസുകളുടെ റോളുകൾ പരസ്പരം മാറ്റുന്നു. പഴയ ഫ്രം-സ്പേസ് അടുത്ത സൈക്കിളിനായി തയ്യാറായ പുതിയ ടു-സ്പേസായി മാറുന്നു.
ഗുണങ്ങൾ:
- ഫ്രാഗ്മെന്റേഷൻ ഇല്ല: ഒബ്ജക്റ്റുകൾ എല്ലായ്പ്പോഴും തുടർച്ചയായി പകർത്തപ്പെടുന്നു, അതിനാൽ ടു-സ്പേസിനുള്ളിൽ ഫ്രാഗ്മെന്റേഷൻ ഇല്ല.
- വേഗതയേറിയ അലോക്കേഷൻ: നിലവിലെ അലോക്കേഷൻ സ്പേസിൽ ഒരു പോയിന്റർ നീക്കുന്നതുകൊണ്ട് അലോക്കേഷനുകൾ വേഗതയേറിയതാണ്.
ദോഷങ്ങൾ:
- സ്പേസ് ഓവർഹെഡ്: ഒരൊറ്റ ഹീപ്പിന്റെ ഇരട്ടി മെമ്മറി ആവശ്യമാണ്, കാരണം രണ്ട് സ്പേസുകൾ സജീവമാണ്.
- പ്രകടനം: ധാരാളം ഒബ്ജക്റ്റുകൾ ലൈവ് ആണെങ്കിൽ ചെലവേറിയതാകാം, കാരണം എല്ലാ ലൈവ് ഒബ്ജക്റ്റുകളും പകർത്തേണ്ടതുണ്ട്.
- STW പോസുകൾ: ഇപ്പോഴും STW പോസുകൾ ആവശ്യമാണ്.
ഉദാഹരണം: ജനറേഷണൽ ഗാർബേജ് കളക്ടറുകളിൽ 'യംഗ്' ജനറേഷനെ ശേഖരിക്കാൻ പലപ്പോഴും ഉപയോഗിക്കുന്നു.
4. ജനറേഷണൽ ഗാർബേജ് കളക്ഷൻ
ഈ സമീപനം ജനറേഷണൽ ഹൈപ്പോതിസിസിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്, ഇത് മിക്ക ഒബ്ജക്റ്റുകൾക്കും വളരെ ചെറിയ ആയുസ്സുണ്ടെന്ന് പ്രസ്താവിക്കുന്നു. ജനറേഷണൽ ജിസി ഹീപ്പിനെ ഒന്നിലധികം ജനറേഷനുകളായി വിഭജിക്കുന്നു:
- യംഗ് ജനറേഷൻ: പുതിയ ഒബ്ജക്റ്റുകൾ അനുവദിക്കുന്നിടം. ഇവിടെ ജിസി കളക്ഷനുകൾ പതിവുള്ളതും വേഗതയേറിയതുമാണ് (മൈനർ ജിസി).
- ഓൾഡ് ജനറേഷൻ: നിരവധി മൈനർ ജിസികളെ അതിജീവിക്കുന്ന ഒബ്ജക്റ്റുകളെ ഓൾഡ് ജനറേഷനിലേക്ക് പ്രൊമോട്ട് ചെയ്യുന്നു. ഇവിടെ ജിസി കളക്ഷനുകൾ കുറഞ്ഞ തവണയും കൂടുതൽ സമഗ്രവുമാണ് (മേജർ ജിസി).
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു:
- പുതിയ ഒബ്ജക്റ്റുകൾ യംഗ് ജനറേഷനിൽ അനുവദിക്കുന്നു.
- യംഗ് ജനറേഷനിൽ മൈനർ ജിസികൾ (പലപ്പോഴും ഒരു കോപ്പിയിംഗ് കളക്ടർ ഉപയോഗിച്ച്) പതിവായി നടത്തുന്നു. അതിജീവിക്കുന്ന ഒബ്ജക്റ്റുകൾ ഓൾഡ് ജനറേഷനിലേക്ക് പ്രൊമോട്ട് ചെയ്യപ്പെടുന്നു.
- മേജർ ജിസികൾ ഓൾഡ് ജനറേഷനിൽ കുറഞ്ഞ തവണ നടത്തുന്നു, പലപ്പോഴും മാർക്ക്-ആൻഡ്-സ്വീപ്പ് അല്ലെങ്കിൽ മാർക്ക്-ആൻഡ്-കോംപാക്റ്റ് ഉപയോഗിച്ച്.
ഗുണങ്ങൾ:
- മെച്ചപ്പെട്ട പ്രകടനം: മുഴുവൻ ഹീപ്പും ശേഖരിക്കുന്നതിന്റെ ആവൃത്തി ഗണ്യമായി കുറയ്ക്കുന്നു. മിക്ക ഗാർബേജുകളും യംഗ് ജനറേഷനിൽ കാണപ്പെടുന്നു, അത് വേഗത്തിൽ ശേഖരിക്കപ്പെടുന്നു.
- കുറഞ്ഞ പോസ് സമയം: മൈനർ ജിസികൾ ഫുൾ ഹീപ്പ് ജിസികളേക്കാൾ വളരെ ചെറുതാണ്.
ദോഷങ്ങൾ:
- സങ്കീർണ്ണത: നടപ്പിലാക്കാൻ കൂടുതൽ സങ്കീർണ്ണമാണ്.
- പ്രൊമോഷൻ ഓവർഹെഡ്: മൈനർ ജിസികളെ അതിജീവിക്കുന്ന ഒബ്ജക്റ്റുകൾക്ക് ഒരു പ്രൊമോഷൻ ചെലവ് വരും.
- റിമെംബേർഡ് സെറ്റുകൾ: ഓൾഡ് ജനറേഷനിൽ നിന്ന് യംഗ് ജനറേഷനിലേക്കുള്ള ഒബ്ജക്റ്റ് റഫറൻസുകൾ കൈകാര്യം ചെയ്യാൻ, "റിമെംബേർഡ് സെറ്റുകൾ" ആവശ്യമാണ്, ഇത് ഓവർഹെഡ് കൂട്ടിച്ചേർക്കാം.
ഉദാഹരണം: ജാവ വെർച്വൽ മെഷീൻ (JVM) ജനറേഷണൽ ജിസി വ്യാപകമായി ഉപയോഗിക്കുന്നു (ഉദാ. ത്രൂപുട്ട് കളക്ടർ, CMS, G1, ZGC പോലുള്ള കളക്ടറുകൾക്കൊപ്പം).
5. റെഫറൻസ് കൗണ്ടിംഗ്
റീച്ചബിലിറ്റി ട്രേസ് ചെയ്യുന്നതിനുപകരം, റെഫറൻസ് കൗണ്ടിംഗ് ഓരോ ഒബ്ജക്റ്റുമായി ഒരു കൗണ്ട് ബന്ധിപ്പിക്കുന്നു, ഇത് അതിലേക്ക് എത്ര റഫറൻസുകൾ ചൂണ്ടിക്കാണിക്കുന്നു എന്ന് സൂചിപ്പിക്കുന്നു. ഒരു ഒബ്ജക്റ്റിന്റെ റഫറൻസ് കൗണ്ട് പൂജ്യമായി കുറയുമ്പോൾ അത് ഗാർബേജ് ആയി കണക്കാക്കപ്പെടുന്നു.
- ഇൻക്രിമെന്റ്: ഒരു ഒബ്ജക്റ്റിലേക്ക് ഒരു പുതിയ റഫറൻസ് ഉണ്ടാകുമ്പോൾ, അതിന്റെ റഫറൻസ് കൗണ്ട് വർദ്ധിപ്പിക്കുന്നു.
- ഡിക്രിമെന്റ്: ഒരു ഒബ്ജക്റ്റിലേക്കുള്ള റഫറൻസ് നീക്കം ചെയ്യുമ്പോൾ, അതിന്റെ കൗണ്ട് കുറയുന്നു. കൗണ്ട് പൂജ്യമായാൽ, ഒബ്ജക്റ്റ് ഉടൻ തന്നെ ഡീലോക്കേറ്റ് ചെയ്യപ്പെടുന്നു.
ഗുണങ്ങൾ:
- പോസുകൾ ഇല്ല: റഫറൻസുകൾ ഉപേക്ഷിക്കുമ്പോൾ ഡീലോക്കേഷൻ ഇൻക്രിമെന്റലായി സംഭവിക്കുന്നു, ഇത് നീണ്ട STW പോസുകൾ ഒഴിവാക്കുന്നു.
- ലാളിത്യം: ആശയപരമായി ലളിതമാണ്.
ദോഷങ്ങൾ:
- സൈക്ലിക് റെഫറൻസുകൾ: സൈക്ലിക് ഡാറ്റാ ഘടനകളെ ശേഖരിക്കാൻ കഴിയാത്തതാണ് പ്രധാന പോരായ്മ. ഒബ്ജക്റ്റ് A, B-യിലേക്ക് ചൂണ്ടിക്കാണിക്കുകയും, B തിരികെ A-യിലേക്ക് ചൂണ്ടിക്കാണിക്കുകയും ചെയ്താൽ, ബാഹ്യ റഫറൻസുകൾ ഇല്ലെങ്കിൽ പോലും, അവയുടെ റഫറൻസ് കൗണ്ടുകൾ ഒരിക്കലും പൂജ്യത്തിലെത്തുകയില്ല, ഇത് മെമ്മറി ലീക്കുകളിലേക്ക് നയിക്കുന്നു.
- ഓവർഹെഡ്: കൗണ്ടുകൾ വർദ്ധിപ്പിക്കുന്നതും കുറയ്ക്കുന്നതും ഓരോ റഫറൻസ് ഓപ്പറേഷനിലും ഓവർഹെഡ് കൂട്ടിച്ചേർക്കുന്നു.
- അപ്രതീക്ഷിത സ്വഭാവം: റഫറൻസ് ഡിക്രിമെന്റുകളുടെ ക്രമം അപ്രതീക്ഷിതമാകാം, ഇത് മെമ്മറി എപ്പോൾ വീണ്ടെടുക്കുമെന്ന് ബാധിക്കുന്നു.
ഉദാഹരണം: സ്വിഫ്റ്റ് (ARC - ഓട്ടോമാറ്റിക് റഫറൻസ് കൗണ്ടിംഗ്), പൈത്തൺ, ഒബ്ജക്ടീവ്-സി എന്നിവയിൽ ഉപയോഗിക്കുന്നു.
6. ഇൻക്രിമെന്റൽ ഗാർബേജ് കളക്ഷൻ
STW പോസ് സമയം കൂടുതൽ കുറയ്ക്കുന്നതിന്, ഇൻക്രിമെന്റൽ ജിസി അൽഗോരിതങ്ങൾ ജിസി ജോലികൾ ചെറിയ ഭാഗങ്ങളായി ചെയ്യുന്നു, ജിസി ഓപ്പറേഷനുകളെ ആപ്ലിക്കേഷൻ എക്സിക്യൂഷനുമായി ഇടകലർത്തുന്നു. ഇത് പോസ് സമയം കുറയ്ക്കാൻ സഹായിക്കുന്നു.
- ഘട്ടം ഘട്ടമായുള്ള പ്രവർത്തനങ്ങൾ: മാർക്ക്, സ്വീപ്പ്/കോംപാക്റ്റ് ഘട്ടങ്ങൾ ചെറിയ ഘട്ടങ്ങളായി വിഭജിച്ചിരിക്കുന്നു.
- ഇടകലർത്തൽ: ജിസി വർക്ക് സൈക്കിളുകൾക്കിടയിൽ ആപ്ലിക്കേഷൻ ത്രെഡിന് എക്സിക്യൂട്ട് ചെയ്യാൻ കഴിയും.
ഗുണങ്ങൾ:
- കുറഞ്ഞ പോസുകൾ: STW പോസുകളുടെ ദൈർഘ്യം ഗണ്യമായി കുറയ്ക്കുന്നു.
- മെച്ചപ്പെട്ട പ്രതികരണശേഷി: ഇന്ററാക്ടീവ് ആപ്ലിക്കേഷനുകൾക്ക് നല്ലതാണ്.
ദോഷങ്ങൾ:
- സങ്കീർണ്ണത: പരമ്പരാഗത അൽഗോരിതങ്ങളേക്കാൾ നടപ്പിലാക്കാൻ കൂടുതൽ സങ്കീർണ്ണമാണ്.
- പ്രകടന ഓവർഹെഡ്: ജിസിയും ആപ്ലിക്കേഷൻ ത്രെഡുകളും തമ്മിലുള്ള ഏകോപനത്തിന്റെ ആവശ്യകത കാരണം കുറച്ച് ഓവർഹെഡ് ഉണ്ടാക്കാം.
ഉദാഹരണം: പഴയ ജെവിഎം പതിപ്പുകളിലെ കൺകറന്റ് മാർക്ക് സ്വീപ്പ് (CMS) കളക്ടർ ഇൻക്രിമെന്റൽ കളക്ഷനുള്ള ഒരു ആദ്യകാല ശ്രമമായിരുന്നു.
7. കൺകറന്റ് ഗാർബേജ് കളക്ഷൻ
കൺകറന്റ് ജിസി അൽഗോരിതങ്ങൾ അവയുടെ ഭൂരിഭാഗം ജോലികളും ആപ്ലിക്കേഷൻ ത്രെഡുകൾക്കൊപ്പം ഒരേസമയം ചെയ്യുന്നു. ഇതിനർത്ഥം ജിസി മെമ്മറി തിരിച്ചറിയുകയും വീണ്ടെടുക്കുകയും ചെയ്യുമ്പോൾ ആപ്ലിക്കേഷൻ പ്രവർത്തിക്കുന്നത് തുടരുന്നു.
- ഏകോപിപ്പിച്ച ജോലി: ജിസി ത്രെഡുകളും ആപ്ലിക്കേഷൻ ത്രെഡുകളും സമാന്തരമായി പ്രവർത്തിക്കുന്നു.
- ഏകോപന സംവിധാനങ്ങൾ: സ്ഥിരത ഉറപ്പാക്കാൻ സങ്കീർണ്ണമായ സംവിധാനങ്ങൾ ആവശ്യമാണ്, ഉദാഹരണത്തിന് ട്രൈ-കളർ മാർക്കിംഗ് അൽഗോരിതങ്ങളും റൈറ്റ് ബാരിയറുകളും (ഇവ ആപ്ലിക്കേഷൻ വരുത്തുന്ന ഒബ്ജക്റ്റ് റഫറൻസുകളിലെ മാറ്റങ്ങൾ ട്രാക്ക് ചെയ്യുന്നു).
ഗുണങ്ങൾ:
- ഏറ്റവും കുറഞ്ഞ STW പോസുകൾ: വളരെ ചെറുതോ "പോസ്-ഫ്രീ" ഓപ്പറേഷനോ ലക്ഷ്യമിടുന്നു.
- ഉയർന്ന ത്രൂപുട്ടും പ്രതികരണശേഷിയും: കർശനമായ ലേറ്റൻസി ആവശ്യകതകളുള്ള ആപ്ലിക്കേഷനുകൾക്ക് മികച്ചതാണ്.
ദോഷങ്ങൾ:
- സങ്കീർണ്ണത: ശരിയായി രൂപകൽപ്പന ചെയ്യാനും നടപ്പിലാക്കാനും വളരെ സങ്കീർണ്ണമാണ്.
- ത്രൂപുട്ട് കുറവ്: കൺകറന്റ് ഓപ്പറേഷനുകളുടെയും ഏകോപനത്തിന്റെയും ഓവർഹെഡ് കാരണം ചിലപ്പോൾ മൊത്തത്തിലുള്ള ആപ്ലിക്കേഷൻ ത്രൂപുട്ട് കുറയ്ക്കാം.
- മെമ്മറി ഓവർഹെഡ്: മാറ്റങ്ങൾ ട്രാക്ക് ചെയ്യുന്നതിന് അധിക മെമ്മറി ആവശ്യമായി വന്നേക്കാം.
ഉദാഹരണം: ജാവയിലെ G1, ZGC, ഷെനൻഡോവ പോലുള്ള ആധുനിക കളക്ടറുകളും, Go, .NET Core എന്നിവയിലെ ജിസിയും വളരെ കൺകറന്റ് ആണ്.
8. G1 (ഗാർബേജ്-ഫസ്റ്റ്) കളക്ടർ
ജാവ 7-ൽ അവതരിപ്പിക്കുകയും ജാവ 9-ൽ ഡിഫോൾട്ടായി മാറുകയും ചെയ്ത G1 കളക്ടർ, ത്രൂപുട്ടും ലേറ്റൻസിയും സന്തുലിതമാക്കാൻ രൂപകൽപ്പന ചെയ്ത ഒരു സെർവർ-സ്റ്റൈൽ, റീജിയൺ-ബേസ്ഡ്, ജനറേഷണൽ, കൺകറന്റ് കളക്ടറാണ്.
- റീജിയൺ-ബേസ്ഡ്: ഹീപ്പിനെ നിരവധി ചെറിയ റീജിയണുകളായി വിഭജിക്കുന്നു. റീജിയണുകൾ ഈഡൻ, സർവൈവർ അല്ലെങ്കിൽ ഓൾഡ് ആകാം.
- ജനറേഷണൽ: ജനറേഷണൽ സ്വഭാവങ്ങൾ നിലനിർത്തുന്നു.
- കൺകറന്റ് & പാരലൽ: മിക്ക ജോലികളും ആപ്ലിക്കേഷൻ ത്രെഡുകൾക്കൊപ്പം കൺകറന്റായി ചെയ്യുന്നു, കൂടാതെ ഇവാക്വേഷനായി (ലൈവ് ഒബ്ജക്റ്റുകൾ പകർത്തുന്നതിന്) ഒന്നിലധികം ത്രെഡുകൾ ഉപയോഗിക്കുന്നു.
- ലക്ഷ്യം-അധിഷ്ഠിതം: ഉപയോക്താവിന് ആവശ്യമുള്ള പോസ് സമയം വ്യക്തമാക്കാൻ അനുവദിക്കുന്നു. ഏറ്റവും കൂടുതൽ ഗാർബേജ് ഉള്ള റീജിയണുകൾ ആദ്യം ശേഖരിച്ച് ഈ ലക്ഷ്യം കൈവരിക്കാൻ G1 ശ്രമിക്കുന്നു (അതുകൊണ്ടാണ് "ഗാർബേജ്-ഫസ്റ്റ്").
ഗുണങ്ങൾ:
- സന്തുലിതമായ പ്രകടനം: വൈവിധ്യമാർന്ന ആപ്ലിക്കേഷനുകൾക്ക് നല്ലതാണ്.
- പ്രവചിക്കാവുന്ന പോസ് സമയം: പഴയ കളക്ടറുകളുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ പോസ് സമയത്തിന്റെ പ്രവചനാതീതത ഗണ്യമായി മെച്ചപ്പെടുത്തി.
- വലിയ ഹീപ്പുകൾ നന്നായി കൈകാര്യം ചെയ്യുന്നു: വലിയ ഹീപ്പ് വലുപ്പങ്ങളുമായി ഫലപ്രദമായി സ്കെയിൽ ചെയ്യുന്നു.
ദോഷങ്ങൾ:
- സങ്കീർണ്ണത: സ്വാഭാവികമായും സങ്കീർണ്ണമാണ്.
- ദൈർഘ്യമേറിയ പോസുകളുടെ സാധ്യത: ടാർഗെറ്റ് പോസ് സമയം വളരെ കുറവാണെങ്കിൽ, ഹീപ്പ് ലൈവ് ഒബ്ജക്റ്റുകളാൽ വളരെ ഫ്രാഗ്മെന്റ് ആണെങ്കിൽ, ഒരൊറ്റ ജിസി സൈക്കിൾ ടാർഗെറ്റിനേക്കാൾ കവിഞ്ഞേക്കാം.
ഉദാഹരണം: പല ആധുനിക ജാവ ആപ്ലിക്കേഷനുകൾക്കുമുള്ള ഡിഫോൾട്ട് ജിസി.
9. ZGC, ഷെനൻഡോവ
ഇവ വളരെ കുറഞ്ഞ പോസ് സമയങ്ങൾക്കായി രൂപകൽപ്പന ചെയ്ത ഏറ്റവും പുതിയ, വികസിത ഗാർബേജ് കളക്ടറുകളാണ്, പലപ്പോഴും ഉപ-മില്ലിസെക്കൻഡ് പോസുകൾ ലക്ഷ്യമിടുന്നു, വളരെ വലിയ ഹീപ്പുകളിൽ പോലും (ടെറാബൈറ്റുകൾ).
- ലോഡ്-ടൈം കോംപാക്ഷൻ: ആപ്ലിക്കേഷനോടൊപ്പം കൺകറന്റായി അവർ കോംപാക്ഷൻ നടത്തുന്നു.
- വളരെ കൺകറന്റ്: മിക്കവാറും എല്ലാ ജിസി ജോലികളും ഒരേസമയം നടക്കുന്നു.
- റീജിയൺ-ബേസ്ഡ്: G1-ന് സമാനമായ റീജിയൺ-ബേസ്ഡ് സമീപനം ഉപയോഗിക്കുന്നു.
ഗുണങ്ങൾ:
- വളരെ കുറഞ്ഞ ലേറ്റൻസി: വളരെ ചെറുതും സ്ഥിരതയുള്ളതുമായ പോസ് സമയം ലക്ഷ്യമിടുന്നു.
- സ്കേലബിലിറ്റി: വലിയ ഹീപ്പുകളുള്ള ആപ്ലിക്കേഷനുകൾക്ക് മികച്ചതാണ്.
ദോഷങ്ങൾ:
- ത്രൂപുട്ടിലുള്ള സ്വാധീനം: ത്രൂപുട്ട്-അധിഷ്ഠിത കളക്ടറുകളേക്കാൾ അല്പം ഉയർന്ന സിപിയു ഓവർഹെഡ് ഉണ്ടാകാം.
- പക്വത: താരതമ്യേന പുതിയതാണെങ്കിലും അതിവേഗം പക്വത പ്രാപിക്കുന്നു.
ഉദാഹരണം: ZGC-ഉം ഷെനൻഡോവയും ഓപ്പൺ ജെഡികെയുടെ സമീപകാല പതിപ്പുകളിൽ ലഭ്യമാണ്, കൂടാതെ ഫിനാൻഷ്യൽ ട്രേഡിംഗ് പ്ലാറ്റ്ഫോമുകൾ അല്ലെങ്കിൽ ആഗോള പ്രേക്ഷകർക്ക് സേവനം നൽകുന്ന വലിയ തോതിലുള്ള വെബ് സേവനങ്ങൾ പോലുള്ള ലേറ്റൻസി-സെൻസിറ്റീവ് ആപ്ലിക്കേഷനുകൾക്ക് അനുയോജ്യമാണ്.
വിവിധ റൺടൈം എൻവയോൺമെന്റുകളിലെ ഗാർബേജ് കളക്ഷൻ
തത്വങ്ങൾ സാർവത്രികമാണെങ്കിലും, ജിസിയുടെ നടപ്പാക്കലും സൂക്ഷ്മതകളും വിവിധ റൺടൈം എൻവയോൺമെന്റുകളിൽ വ്യത്യാസപ്പെട്ടിരിക്കുന്നു:
- ജാവ വെർച്വൽ മെഷീൻ (JVM): ചരിത്രപരമായി, ജിസി ഇന്നൊവേഷന്റെ മുൻനിരയിൽ ജെവിഎം ഉണ്ട്. ഇത് ഒരു പ്ലഗ്ഗബിൾ ജിസി ആർക്കിടെക്ചർ വാഗ്ദാനം ചെയ്യുന്നു, ഇത് ഡെവലപ്പർമാരെ അവരുടെ ആപ്ലിക്കേഷന്റെ ആവശ്യങ്ങൾക്കനുസരിച്ച് വിവിധ കളക്ടറുകളിൽ (സീരിയൽ, പാരലൽ, CMS, G1, ZGC, ഷെനൻഡോവ) നിന്ന് തിരഞ്ഞെടുക്കാൻ അനുവദിക്കുന്നു. വൈവിധ്യമാർന്ന ആഗോള വിന്യാസ സാഹചര്യങ്ങളിൽ പ്രകടനം ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിന് ഈ ഫ്ലെക്സിബിലിറ്റി നിർണായകമാണ്.
- .നെറ്റ് കോമൺ ലാംഗ്വേജ് റൺടൈം (CLR): .നെറ്റ് സിഎൽആറിലും ഒരു സങ്കീർണ്ണമായ ജിസി ഉണ്ട്. ഇത് ജനറേഷണലും കോംപാക്റ്റിംഗ് ഗാർബേജ് കളക്ഷനും വാഗ്ദാനം ചെയ്യുന്നു. സിഎൽആർ ജിസിക്ക് വർക്ക്സ്റ്റേഷൻ മോഡിലോ (ക്ലയിന്റ് ആപ്ലിക്കേഷനുകൾക്കായി ഒപ്റ്റിമൈസ് ചെയ്തത്) അല്ലെങ്കിൽ സെർവർ മോഡിലോ (മൾട്ടി-പ്രോസസർ സെർവർ ആപ്ലിക്കേഷനുകൾക്കായി ഒപ്റ്റിമൈസ് ചെയ്തത്) പ്രവർത്തിക്കാൻ കഴിയും. പോസുകൾ കുറയ്ക്കുന്നതിന് ഇത് കൺകറന്റ്, ബാക്ക്ഗ്രൗണ്ട് ഗാർബേജ് കളക്ഷനും പിന്തുണയ്ക്കുന്നു.
- ഗോ റൺടൈം: ഗോ പ്രോഗ്രാമിംഗ് ഭാഷ ഒരു കൺകറന്റ്, ട്രൈ-കളർ മാർക്ക്-ആൻഡ്-സ്വീപ്പ് ഗാർബേജ് കളക്ടർ ഉപയോഗിക്കുന്നു. കാര്യക്ഷമമായ കൺകറന്റ് സിസ്റ്റങ്ങൾ നിർമ്മിക്കുക എന്ന ഗോയുടെ തത്ത്വചിന്തയുമായി യോജിപ്പിച്ച്, കുറഞ്ഞ ലേറ്റൻസിക്കും ഉയർന്ന കൺകറൻസിക്കും വേണ്ടിയാണ് ഇത് രൂപകൽപ്പന ചെയ്തിരിക്കുന്നത്. ഗോ ജിസി പോസുകൾ വളരെ ചെറുതായി നിലനിർത്താൻ ലക്ഷ്യമിടുന്നു, സാധാരണയായി മൈക്രോസെക്കൻഡുകളുടെ ക്രമത്തിൽ.
- ജാവാസ്ക്രിപ്റ്റ് എഞ്ചിനുകൾ (V8, സ്പൈഡർമങ്കി): ബ്രൗസറുകളിലെയും നോഡ്.ജെഎസിലെയും ആധുനിക ജാവാസ്ക്രിപ്റ്റ് എഞ്ചിനുകൾ ജനറേഷണൽ ഗാർബേജ് കളക്ടറുകൾ ഉപയോഗിക്കുന്നു. അവർ മാർക്ക്-ആൻഡ്-സ്വീപ്പ് പോലുള്ള സാങ്കേതിക വിദ്യകൾ ഉപയോഗിക്കുകയും യുഐ ഇടപെടലുകൾ പ്രതികരണശേഷിയുള്ളതായി നിലനിർത്താൻ പലപ്പോഴും ഇൻക്രിമെന്റൽ കളക്ഷൻ ഉൾപ്പെടുത്തുകയും ചെയ്യുന്നു.
ശരിയായ ജിസി അൽഗോരിതം തിരഞ്ഞെടുക്കൽ
അനുയോജ്യമായ ജിസി അൽഗോരിതം തിരഞ്ഞെടുക്കുന്നത് ആപ്ലിക്കേഷൻ പ്രകടനം, സ്കേലബിലിറ്റി, ഉപയോക്തൃ അനുഭവം എന്നിവയെ ബാധിക്കുന്ന ഒരു നിർണായക തീരുമാനമാണ്. എല്ലാവർക്കും ഒരുപോലെയുള്ള ഒരു പരിഹാരമില്ല. ഈ ഘടകങ്ങൾ പരിഗണിക്കുക:
- ആപ്ലിക്കേഷൻ ആവശ്യകതകൾ: നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ലേറ്റൻസി-സെൻസിറ്റീവ് (ഉദാ. റിയൽ-ടൈം ട്രേഡിംഗ്, ഇന്ററാക്ടീവ് വെബ് സേവനങ്ങൾ) ആണോ അതോ ത്രൂപുട്ട്-അധിഷ്ഠിതമാണോ (ഉദാ. ബാച്ച് പ്രോസസ്സിംഗ്, ശാസ്ത്രീയ കമ്പ്യൂട്ടിംഗ്)?
- ഹീപ്പ് വലുപ്പം: വളരെ വലിയ ഹീപ്പുകൾക്ക് (പത്തോ നൂറോ ഗിഗാബൈറ്റുകൾ), സ്കേലബിലിറ്റിക്കും കുറഞ്ഞ ലേറ്റൻസിക്കും വേണ്ടി രൂപകൽപ്പന ചെയ്ത കളക്ടറുകൾ (G1, ZGC, ഷെനൻഡോവ പോലുള്ളവ) പലപ്പോഴും തിരഞ്ഞെടുക്കപ്പെടുന്നു.
- കൺകറൻസി ആവശ്യങ്ങൾ: നിങ്ങളുടെ ആപ്ലിക്കേഷന് ഉയർന്ന തലത്തിലുള്ള കൺകറൻസി ആവശ്യമുണ്ടോ? കൺകറന്റ് ജിസി പ്രയോജനകരമാകും.
- വികസന പ്രയത്നം: ലളിതമായ അൽഗോരിതങ്ങളെക്കുറിച്ച് ചിന്തിക്കാൻ എളുപ്പമായിരിക്കാം, എന്നാൽ പലപ്പോഴും പ്രകടനത്തിൽ വിട്ടുവീഴ്ചകൾ ഉണ്ടാകും. വികസിത കളക്ടറുകൾ മികച്ച പ്രകടനം വാഗ്ദാനം ചെയ്യുന്നു, പക്ഷേ കൂടുതൽ സങ്കീർണ്ണമാണ്.
- ടാർഗെറ്റ് എൻവയോൺമെന്റ്: വിന്യാസ എൻവയോൺമെന്റിന്റെ (ഉദാ. ക്ലൗഡ്, എംബഡഡ് സിസ്റ്റംസ്) കഴിവുകളും പരിമിതികളും നിങ്ങളുടെ തിരഞ്ഞെടുപ്പിനെ സ്വാധീനിച്ചേക്കാം.
ജിസി ഒപ്റ്റിമൈസേഷനുള്ള പ്രായോഗിക നുറുങ്ങുകൾ
ശരിയായ അൽഗോരിതം തിരഞ്ഞെടുക്കുന്നതിനുപരി, നിങ്ങൾക്ക് ജിസി പ്രകടനം ഒപ്റ്റിമൈസ് ചെയ്യാൻ കഴിയും:
- ജിസി പാരാമീറ്ററുകൾ ട്യൂൺ ചെയ്യുക: മിക്ക റൺടൈമുകളും ജിസി പാരാമീറ്ററുകൾ (ഉദാ. ഹീപ്പ് വലുപ്പം, ജനറേഷൻ വലുപ്പങ്ങൾ, നിർദ്ദിഷ്ട കളക്ടർ ഓപ്ഷനുകൾ) ട്യൂൺ ചെയ്യാൻ അനുവദിക്കുന്നു. ഇതിന് പലപ്പോഴും പ്രൊഫൈലിംഗും പരീക്ഷണവും ആവശ്യമാണ്.
- ഒബ്ജക്റ്റ് പൂളിംഗ്: പൂളിംഗിലൂടെ ഒബ്ജക്റ്റുകൾ പുനരുപയോഗിക്കുന്നത് അലോക്കേഷനുകളുടെയും ഡീലോക്കേഷനുകളുടെയും എണ്ണം കുറയ്ക്കുകയും അതുവഴി ജിസി സമ്മർദ്ദം കുറയ്ക്കുകയും ചെയ്യും.
- അനാവശ്യ ഒബ്ജക്റ്റ് ക്രിയേഷൻ ഒഴിവാക്കുക: ധാരാളം ഹ്രസ്വകാല ഒബ്ജക്റ്റുകൾ സൃഷ്ടിക്കുന്നത് ശ്രദ്ധിക്കുക, കാരണം ഇത് ജിസിയുടെ ജോലി വർദ്ധിപ്പിക്കും.
- വീക്ക്/സോഫ്റ്റ് റഫറൻസുകൾ വിവേകപൂർവ്വം ഉപയോഗിക്കുക: മെമ്മറി കുറവാണെങ്കിൽ ഒബ്ജക്റ്റുകൾ ശേഖരിക്കാൻ ഈ റഫറൻസുകൾ അനുവദിക്കുന്നു, ഇത് കാഷുകൾക്ക് ഉപയോഗപ്രദമാകും.
- നിങ്ങളുടെ ആപ്ലിക്കേഷൻ പ്രൊഫൈൽ ചെയ്യുക: ജിസി സ്വഭാവം മനസ്സിലാക്കാനും നീണ്ട പോസുകൾ തിരിച്ചറിയാനും ജിസി ഓവർഹെഡ് കൂടുതലുള്ള മേഖലകൾ കണ്ടെത്താനും പ്രൊഫൈലിംഗ് ടൂളുകൾ ഉപയോഗിക്കുക. വിഷ്വൽവിഎം, ജെകൺസോൾ (ജാവയ്ക്ക്), പെർഫ് വ്യൂ (.നെറ്റിന്), `pprof` (ഗോയ്ക്ക്) പോലുള്ള ടൂളുകൾ വിലമതിക്കാനാവാത്തതാണ്.
ഗാർബേജ് കളക്ഷന്റെ ഭാവി
ഇതിലും കുറഞ്ഞ ലേറ്റൻസിക്കും ഉയർന്ന കാര്യക്ഷമതയ്ക്കും വേണ്ടിയുള്ള അന്വേഷണം തുടരുന്നു. ഭാവിയിലെ ജിസി ഗവേഷണവും വികസനവും ഇവയിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ സാധ്യതയുണ്ട്:
- പോസുകളുടെ കൂടുതൽ കുറവ്: യഥാർത്ഥത്തിൽ "പോസ്-ലെസ്" അല്ലെങ്കിൽ "നിയർ-പോസ്-ലെസ്" കളക്ഷൻ ലക്ഷ്യമിടുന്നു.
- ഹാർഡ്വെയർ സഹായം: ഹാർഡ്വെയറിന് എങ്ങനെ ജിസി പ്രവർത്തനങ്ങളെ സഹായിക്കാൻ കഴിയുമെന്ന് പര്യവേക്ഷണം ചെയ്യുന്നു.
- എഐ/എംഎൽ-ഡ്രിവൺ ജിസി: ആപ്ലിക്കേഷൻ സ്വഭാവത്തിനും സിസ്റ്റം ലോഡിനും അനുസരിച്ച് ജിസി തന്ത്രങ്ങൾ ചലനാത്മകമായി പൊരുത്തപ്പെടുത്തുന്നതിന് മെഷീൻ ലേണിംഗ് ഉപയോഗിക്കാൻ സാധ്യതയുണ്ട്.
- ഇന്റർഓപ്പറബിലിറ്റി: വ്യത്യസ്ത ജിസി നടപ്പാക്കലുകളും ഭാഷകളും തമ്മിലുള്ള മികച്ച സംയോജനവും ഇന്റർഓപ്പറബിലിറ്റിയും.
ഉപസംഹാരം
ആധുനിക റൺടൈം സിസ്റ്റങ്ങളുടെ ഒരു മൂലക്കല്ലാണ് ഗാർബേജ് കളക്ഷൻ, ആപ്ലിക്കേഷനുകൾ സുഗമമായും കാര്യക്ഷമമായും പ്രവർത്തിക്കുന്നുവെന്ന് ഉറപ്പാക്കാൻ നിശ്ശബ്ദമായി മെമ്മറി കൈകാര്യം ചെയ്യുന്നു. അടിസ്ഥാനപരമായ മാർക്ക്-ആൻഡ്-സ്വീപ്പ് മുതൽ അൾട്രാ-ലോ-ലേറ്റൻസി ZGC വരെ, ഓരോ അൽഗോരിതവും മെമ്മറി മാനേജ്മെന്റ് ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിലെ ഒരു പരിണാമപരമായ ഘട്ടത്തെ പ്രതിനിധീകരിക്കുന്നു. ലോകമെമ്പാടുമുള്ള ഡെവലപ്പർമാർക്ക്, ഈ സാങ്കേതിക വിദ്യകളെക്കുറിച്ചുള്ള വ്യക്തമായ ധാരണ, വൈവിധ്യമാർന്ന ആഗോള സാഹചര്യങ്ങളിൽ അഭിവൃദ്ധി പ്രാപിക്കാൻ കഴിയുന്ന കൂടുതൽ മികച്ച പ്രകടനമുള്ളതും സ്കേലബിൾ ആയതും വിശ്വസനീയവുമായ സോഫ്റ്റ്വെയർ നിർമ്മിക്കാൻ അവരെ പ്രാപ്തരാക്കുന്നു. വിട്ടുവീഴ്ചകൾ മനസ്സിലാക്കുകയും മികച്ച രീതികൾ പ്രയോഗിക്കുകയും ചെയ്യുന്നതിലൂടെ, അടുത്ത തലമുറയിലെ അസാധാരണമായ ആപ്ലിക്കേഷനുകൾ സൃഷ്ടിക്കുന്നതിന് നമുക്ക് ജിസിയുടെ ശക്തി പ്രയോജനപ്പെടുത്താം.