प्रौद्योगिकी साझेदारी

[जीसी कचरा संग्रहण एल्गोरिदम् तथा संग्राहकः] ।

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

लेखकः ofLJli
लिंकः https://juejin.cn/post/7003213289425633287?searchId=20240709085629749958B21D886D4E67D4
स्रोतः - दुर्लभ पृथ्वी नगेट्स्
प्रतिलिपिधर्मः लेखकस्य एव अस्ति। व्यावसायिकपुनर्मुद्रणार्थं प्राधिकरणार्थं लेखकेन सह सम्पर्कं कुर्वन्तु अव्यावसायिकपुनर्मुद्रणार्थं कृपया स्रोतः सूचयन्तु ।


अवलोकनम्

JVM इत्यस्मिन् मुख्यसंरचनानि सन्ति: वर्चुअल् मशीन् स्टैक्, हीप्, मेथड् एरिया च । वर्चुअल् मशीन् स्टैक् इत्यस्य स्टैक् फ्रेम इत्यस्य आकारः कम्पैलर इत्यनेन निर्धारितः अस्ति । जावा ढेरस्य तथा विधिक्षेत्रे महत्त्वपूर्णाः अनिश्चितताः सन्ति स्मृतेः अस्य भागस्य आवंटनं पुनःप्रयोगश्च गतिशीलाः सन्ति यत् GC इत्यस्य चिन्ता अस्ति यत् स्मृतेः अस्य भागस्य प्रबन्धनं कथं करणीयम् इति ।

अयं लेखः निम्नलिखितत्रयेषु विषयेषु केन्द्रितः अस्ति यत् GC इत्यनेन साधयितुं आवश्यकम् अस्ति।

  • कदा पुनः प्रयोगः करणीयः ? (जीसी प्रेरयन्ति ये परिस्थितयः)
  • कचरा संग्रहण एल्गोरिदम
  • कचरा संग्राहक

कदा पुनः प्रयोगः कर्तव्यः

द्वयोः पीढीपरिकल्पनानुसारम्- १.绝大多数的对象都是朝生夕死熬过越多次的GC回收的对象就越难回收 . राशौ पीढिषु विभक्तः अस्ति : नूतनपीढी (Eden, From, To), पुरातनपीढी, पीढीयाः पुनःप्रयोगः अपि जीसी-काले क्रियते ।

image.png

लघु जीसी : नवीनपीढीयां अप्रयुक्तवस्तूनाम् पुनः प्रयोगं कुर्वन्तु नूतनपीढीयां अधिकांशवस्तूनाम् लक्षणं यत् ते रात्रौ एव जीवन्ति, म्रियन्ते च। ट्रिगरसमयाः सन्ति : १.

  • एडेन् क्षेत्रे अपर्याप्तं स्थानं माइनर जीसी इत्यस्य प्रवर्तनं करोति यतः एडेन् स्थानं अधिकवारं ट्रिगर भवति, अस्य कृते द्रुततरं कुशलं च संग्रहण एल्गोरिदम् आवश्यकं भवति标记-复制算法अस्य क्षेत्रस्य पुनः प्रयोगं कुर्वन्तु (पश्चात् चर्चा कृता)।

प्रमुख जीसी : पुरातनपीढीयां अप्रयुक्तवस्तूनि पुनः प्रयोजयन्तु।सामान्यप्रयोगः标记-清除算法वा标记-整理算法पुनः प्रयोगं कुर्वन्तु।

पूर्ण जीसी : ढेरः विधिक्षेत्रे च अप्रयुक्तवस्तूनि पुनः प्रयोजयन्तु। Full GC पुनःप्रयोगस्य परिधिः तुल्यकालिकरूपेण विशाला अस्ति, दीर्घकालं यावत् निष्पादनसमयः विलम्बं जनयितुं शक्नोति, अतः Full GC इत्यस्य संख्या यथासम्भवं न्यूनीकर्तव्या उत्प्रेरकसमयाः मोटेन निम्नलिखितरूपेण भवन्ति ।

  • पुरातनपीढीयां अपर्याप्तस्थानं पुरातनपीढीयां नूतनपीढीवस्तूनाम् प्रवेशेन, पुरातनपीढीयां प्रत्यक्षतया प्रवेशेन बृहत्वस्तूनि इत्यादिभिः कारणं भवति यदि एतानि वस्तूनि पुरातनपीढीयाः अधिकतमनिरन्तरस्थाने संग्रहीतुं न शक्यन्ते तर्हि Full GC पुनःप्रयोगः क्रियते .

  • विधिक्षेत्रे अपर्याप्तं स्थानं विधिक्षेत्रे मुख्यतया प्रकारसूचनाः नित्यकुण्डाः च संगृह्यन्ते अपर्याप्तस्थानस्य अपि जोखिमः भवति, तथा च Full GC पुनःप्रयोगः क्रियते ।

  • System.gc() स्पष्टतया आह्वयति, Full GC द्वारा पुनःप्रयुक्तं भविष्यति ।

कचरासंग्रहणस्य त्रयः अल्गोरिदम् : १.

1. मार्क-एण्ड्-स्वीप एल्गोरिदम्

सिद्धान्तः प्रयोगः可达性分析算法अनुपलब्धवस्तूनि कुर्वन्तुनिशानम्, ततः कृत्वास्पष्टः . दोषाः : यदा बहुवस्तूनि सन्ति तदा चिह्नदक्षता न्यूना भवति । वस्तुं स्वच्छं कृत्वा स्मृतिविखण्डनं भविष्यति, स्मृतिः च विच्छिन्नः भविष्यति । उद्देश्यम् : केचन संग्राहकाः पुरातनपीढीसङ्ग्रहे एतस्य एल्गोरिदम् इत्यस्य उपयोगं करिष्यन्ति

2. चिह्न-प्रतिलिपि एल्गोरिदम्

सिद्धान्तः - स्मृतिस्थानं द्विधा विभज्य अर्धं वस्तुसञ्चयार्थं उपयुज्यते, अपरं अर्धं मुक्तं भवति ।यदि यत्र वस्तुनि संगृह्यन्ते तत् क्षेत्रं पूर्णं भवति तर्हि उपयोगं कुर्वन्तु可达性分析算法जीववस्तूनि चालयन्तुनिशानम्बहिः आगच्छन्तु ततःप्रतिलिपि अन्यस्मिन् रिक्तक्षेत्रे गत्वा पूर्वसर्वक्षेत्राणि शून्यनिरन्तरस्थानेषु स्वच्छं कुर्वन्तु । हानिः - यदि बहवः जीविताः वस्तूनि सन्ति तर्हि स्मृतिप्रतिलिपिकरणस्य विकासस्य च बृहत् परिमाणं आवश्यकं भविष्यति । स्मृतिस्थानं केवलं अर्धं लाभं अपव्ययसंसाधनं च उपयोक्तुं शक्नोति । कार्यं : एतत् पुनःप्रयोग-अल्गोरिदम् सामान्यतया नूतन-पीढीयां जीवन्ति, म्रियन्ते च तेषु वस्तुषु उपयुज्यते । परन्तु नूतनपीढौ प्रतिकृति-अल्गोरिदम् अनुकूलितं कृतम् अस्ति, परन्तु एतत् एल्गोरिदम् अत्यधिकं जीवितवस्तूनाम् आवंटनं न कर्तुं आवंटन-गारण्टी-तन्त्रं योजयति एप्पल्-शैल्याः पुनःप्रयोगस्य एल्गोरिदम् उपयुज्यते :

image.png

3. चिह्न-संयोजन-एल्गोरिदम्

सिद्धान्तः - चिह्नीकरणस्य प्रक्रिया अनुवर्तते标记-清除算法तथैव तर्हि整理存जीवितवस्तूनि एकं अन्तं गच्छन्ति, ततः जीवितसीमातः बहिः सर्वाणि वस्तूनि清除 . दोषाः : वस्तुनां चलने किञ्चित् जोखिमं भवति । अत्यधिकं वस्तु अकुशलं भवति कार्यम् : मुख्यतया वृद्धावस्थायां।

image.png

कचरा संग्राहक

जीसी द्वारा प्रयुक्तः कचरासंग्रहकः पुनःप्रयोगाय उपयुज्यते निरन्तरं विकासेन सह अधिकाधिकाः कचरासंग्रहकाः सन्ति तथा च ते त्रयः वर्गाः विभक्ताः सन्ति : एकसूत्रसंग्रहकः, बहुसूत्रसंग्रहकः, समवर्ती च संग्रहणम् ।

एकसूत्रयुक्तः संग्राहकः

एकसूत्रयुक्तानां संग्राहकानाम् संयोजनानि सन्ति : Serial/Serial Old collector । ते न केवलं संग्रहणक्रियायाः समाप्त्यर्थं संग्रहसूत्रस्य उपयोगं कुर्वन्ति, अपितु संग्रहसूत्रस्य कार्यं कुर्वन् उपयोक्तृसूत्रेण संग्रहणं समाप्तं यावत् प्रतीक्षां त्यक्तव्यम् चित्रे Serial/Serial Old संग्राहकस्य योजनाबद्धचित्रं दृश्यते:

image.png यदि ग्राहकस्य स्मृतिसंसाधनं सीमितं भवति, प्रोसेसरकोरस्य संख्या अल्पा भवति, अथवा सः एककोरप्रोसेसरः अस्ति, तर्हि तस्य सरलता कार्यक्षमता च संग्राहकं यथाशीघ्रं कार्यं सम्पन्नं कर्तुं शक्नोति

बहुसूत्रयुक्त समानान्तर संग्राहक

बहु-धागायुक्ताः संग्राहकाः सन्ति: ParNew, Parallel Scavenge, Parallel Old च, येषु Parallel Scavenge/Parallel Old एकः संयुक्तः संग्राहकः अस्ति । एते बहुसूत्रयुक्ताः संग्राहकाः केवलं कचरासंग्रहणसूत्राणि योजयन्ति, उपयोक्तृसूत्राणि च अद्यापि कचरासंग्रहणस्य प्रतीक्षां त्यजन्ति ।

image.png

parNew collector: इदं वस्तुतः Serial इत्यस्य बहु-धागायुक्तं संस्करणम् अस्ति यत् इदं सम्प्रति Serial collector तथा CMS collector इत्यनेन सह सहकार्यं कर्तुं शक्नोति ।

Parallel Scavenge collector : सामान्यतया Parallel Old collector इत्यनेन सह प्रयोगः भवति ।parNew collector इत्यस्य तुलने, इदं अधिकं ध्यानं ददाति吞吐量नियन्त्रणं, थ्रूपुट् अस्तिउपयोक्तृसूत्रनिष्पादनसमयः कुल CPU चालनसमयस्य लेखान् करोति, थ्रूपुट् अवश्यं यावत् बृहत् भवति तावत् उत्तमम्।

बहु-थ्रेडिंग् सामान्यतया सर्वरस्य उपयोगं करोति, यतः बहु-थ्रेडिंग् इत्यस्य निष्पादने समयस्लाइस् परिभ्रमणस्य उपभोगसमयः भवति यदि एषः एकः प्रोसेसरः अस्ति तर्हि प्रसंस्करणदक्षता निःसंदेहं मन्दतरं भविष्यति परन्तु संसाधनानाम् कृते अतीव उत्तमम् अस्ति, तथा च विश्लेषणगणनायाः सर्वरपक्षः यस्य उपयोक्तुः सह अन्तरक्रियायाः आवश्यकता नास्ति, सः निष्पादनदक्षतां वर्धयितुं शक्नोति ।

समवर्ती संग्राहकः

समवर्ती संग्राहकाः अन्तर्भवन्ति: CMS संग्राहकः, यः एकः संग्राहकः अस्ति यस्य उद्देश्यं भवति यत् प्रणालीविरामसमयं यथासम्भवं लघुं कृत्वा उत्तमं उपयोक्तृअनुभवं प्रदातुं शक्नोति अस्य संग्रहसूत्रं उपयोक्तृसूत्रेण सह समवर्तीरूपेण निष्पादयितुं शक्नोति । सीएमएस इत्यत्र त्रीणि सन्ति标记(प्रारम्भचिह्न, समवर्ती चिह्न, टिप्पणी) एकवारं च清理(समवर्ती सफाई), त्रयाणां चिह्नानां मध्ये द्वयोः लघुतरस्य उपयोक्तृसूत्रस्य स्थगितीकरणस्य आवश्यकता भवति, एकं दीर्घतरं चिह्नं यत् उपयोक्तृसूत्रेण सह समवर्ती भवति, तथा च उपयोक्तृसूत्रेण सह समवर्ती भवति स्वच्छता

image.png

प्रारम्भिक चिह्न: GC Roots इत्यनेन सह सम्बद्धं प्रथमं वस्तु चिह्नितव्यम्, समयः अतीव अल्पः अस्ति समवर्ती चिह्न: GC Roots (reachability analysis algorithm) इत्यस्य सन्दर्भशृङ्खलां उपयोक्तृसूत्रेण सह समवर्तीरूपेण निष्पादयन्तु, यस्मिन् दीर्घकालं भवति पुनः लेबलं कुर्वन्तु : समवर्ती चिह्नीकरणचरणस्य समये उपयोक्तृसूत्रेण उत्पन्नं नूतनं सन्दर्भशृङ्खलां पुनः अन्वेष्टुम्। प्रारम्भिकचिह्नात् किञ्चित् दीर्घतरम्।समवर्ती स्पष्ट:उपयुञ्जताम्‌标记-清除算法निष्प्रयोजनवस्तूनि स्वच्छानि कुर्वन्तु।

त्रयः प्रमुखाः दोषाः : 1: CPU संवेदनशीलता, समवर्ती अल्पसंख्याककोरयुक्तेषु प्रोसेसरेषु उपयोक्तृधागानां संचालनं प्रभावितं कर्तुं शक्नोति । २: प्लवमानः कचरः : समवर्ती सफाईचरणस्य समये उत्पन्नः कचरा केवलं अग्रिमस्य जीसी-सङ्ग्रहस्य प्रतीक्षां कर्तुं शक्नोति । त्रयः : स्मृतिविखण्डनम्, चिह्न-शुद्धिः पूजा-उत्पादानाम् अविच्छिन्न-स्मृति-स्थानस्य बृहत् परिमाणं भवति ।

संक्षेपः

अयं लेखः आरभ्यते那些内存需要回收什么时候回收如何回收कार्यान्वयनरूपेण द्वौ वस्तुजीवननिर्णयनिर्णयस्य एल्गोरिदम्, वर्गक्षेत्रपुनःप्रयोगस्य शर्ताः, पीढीतन्त्रं पुनःप्रयोगस्य संग्रहसमयः, त्रयः संग्रहण एल्गोरिदम्, सामान्यतया प्रयुक्ताः कचरासंग्रहकाः च लिखिताः सन्ति