జావాలో చెత్త సేకరణ ఏమిటో గుర్తుకు తెచ్చుకోండి
చెత్త సేకరణ అనేది ఉపయోగించని వస్తువులను నాశనం చేయడం ద్వారా పూర్తి రన్టైమ్ మెమరీని తిరిగి పొందే ప్రక్రియ.
కొన్నిసార్లు ప్రోగ్రామర్ పనికిరాని వస్తువులను నాశనం చేయడం మరచిపోవచ్చు మరియు వాటికి కేటాయించిన మెమరీ విడుదల చేయబడదు. మరింత ఎక్కువ సిస్టమ్ మెమరీ వినియోగించబడుతుంది మరియు చివరికి ఎక్కువ కేటాయించబడదు. ఇటువంటి అప్లికేషన్లు "మెమరీ లీక్స్" తో బాధపడుతున్నాయి.
నిర్దిష్ట పాయింట్ తర్వాత, కొత్త వస్తువులను సృష్టించడానికి తగినంత మెమరీ ఉండదు మరియు OutOfMemoryError కారణంగా ప్రోగ్రామ్ అసాధారణంగా ముగుస్తుంది .
జావాలో చెత్త సేకరణ అనేది జావా ప్రోగ్రామ్లు మెమరీని స్వయంచాలకంగా నిర్వహించే ప్రక్రియ. జావా ప్రోగ్రామ్లు జావా వర్చువల్ మెషీన్ (JVM)పై పనిచేసే బైట్కోడ్లో కంపైల్ చేయబడతాయి.
జావా ప్రోగ్రామ్లు JVMలో రన్ అయినప్పుడు, ఆబ్జెక్ట్లు కుప్పపై సృష్టించబడతాయి, ఇది వాటికి కేటాయించిన మెమరీలో భాగం.
జావా అప్లికేషన్ రన్ అవుతున్నప్పుడు, అందులో కొత్త వస్తువులు సృష్టించబడతాయి. చివరికి, కొన్ని వస్తువులు ఇక అవసరం లేదు. ఏ సమయంలోనైనా, హీప్ మెమరీ రెండు రకాల వస్తువులను కలిగి ఉంటుందని మనం చెప్పగలం.
- లైవ్ - ఈ వస్తువులు ఉపయోగించబడతాయి, అవి వేరే చోట నుండి సూచించబడతాయి.
- చనిపోయిన - ఈ వస్తువులు మరెక్కడా ఉపయోగించబడవు, వాటికి సూచనలు లేవు.
చెత్త సేకరించేవాడు ఈ ఉపయోగించని వస్తువులను కనుగొంటాడు మరియు మెమరీని ఖాళీ చేయడానికి వాటిని తీసివేస్తాడు.
జావాలో చెత్త సేకరణ అనేది ఆటోమేటిక్ ప్రక్రియ . తొలగించాల్సిన వస్తువులను ప్రోగ్రామర్ స్పష్టంగా గుర్తించాల్సిన అవసరం లేదు.
ప్రతి JVM దాని స్వంత చెత్త సేకరణను అమలు చేయగలదు. ఏది ఏమైనప్పటికీ, హీప్ మెమరీలో ఉన్న వస్తువులను గుర్తించడానికి లేదా చేరుకోలేని వస్తువులను గుర్తించడానికి మరియు వాటిని సంపీడనం ద్వారా నాశనం చేయడానికి కలెక్టర్ ప్రామాణిక JVM స్పెసిఫికేషన్కు అనుగుణంగా ఉండాలి.
ఆబ్జెక్ట్ రీచబిలిటీ
ఒక వస్తువును సజీవంగా గుర్తించడానికి, లింక్ల ఉనికి సరిపోదు. ఎందుకంటే కొన్ని చనిపోయిన వస్తువులు ఇతర చనిపోయిన వస్తువులను సూచిస్తాయి. అందుకే ఒక వస్తువుకు సంబంధించిన అన్ని సూచనలలో, “ప్రత్యక్ష” వస్తువు నుండి కనీసం ఒకటి ఉండాలి.
చెత్త సేకరించేవారు జీవించి ఉన్న మరియు చనిపోయిన వస్తువుల మధ్య తేడాను గుర్తించడానికి GC రూట్స్ ( చెత్త సేకరణ మూలాలు ) భావనతో పని చేస్తారు . 100% ప్రత్యక్ష వస్తువులు ఉన్నాయి మరియు వాటి నుండి ఇతర వస్తువులను యానిమేట్ చేసే లింక్లు మరియు మొదలైనవి ఉన్నాయి.
అటువంటి మూలాలకు ఉదాహరణలు:
- సిస్టమ్ క్లాస్ లోడర్ ద్వారా లోడ్ చేయబడిన తరగతులు.
- ప్రత్యక్ష ప్రసారాలు.
- ప్రస్తుతం అమలు చేస్తున్న పద్ధతులు మరియు స్థానిక వేరియబుల్స్ యొక్క పారామితులు.
- సమకాలీకరణ కోసం మానిటర్గా ఉపయోగించే వస్తువులు.
- కొన్ని ప్రయోజనం కోసం చెత్త సేకరణ నుండి ఉంచబడిన వస్తువులు.
- చెత్త సేకరించేవాడు ఈ మూలాల నుండి ప్రారంభించి, ఇతర వస్తువులకు సూచనలను అనుసరించి మెమరీలోని వస్తువుల యొక్క మొత్తం గ్రాఫ్ గుండా నడుస్తాడు.
జావాలో చెత్త సేకరణ దశలు
ప్రామాణిక చెత్త సేకరణ అమలు మూడు దశలను కలిగి ఉంటుంది.
1. వస్తువులను ప్రత్యక్షంగా గుర్తించండి
ఈ సమయంలో, చెత్త కలెక్టర్ (GC) ఆబ్జెక్ట్ గ్రాఫ్ను దాటడం ద్వారా మెమరీలోని అన్ని జీవ వస్తువులను గుర్తించాలి.
అది ఒక వస్తువును సందర్శించినప్పుడు, అది అందుబాటులో ఉన్నట్లు మరియు సజీవంగా ఉన్నట్లు గుర్తు చేస్తుంది. GC మూలాల నుండి అందుబాటులో లేని అన్ని వస్తువులు చెత్త సేకరణకు అభ్యర్థులుగా పరిగణించబడతాయి.
2. చనిపోయిన వస్తువులను శుభ్రం చేయడం
మార్కప్ దశ తర్వాత, మెమొరీ స్పేస్ని జీవించి ఉన్న (సందర్శించిన) లేదా చనిపోయిన (సందర్శించని) వస్తువులు ఆక్రమించాయి. శుభ్రపరిచే దశ ఈ చనిపోయిన వస్తువులను కలిగి ఉన్న మెమరీ శకలాలను విముక్తి చేస్తుంది.
3. మెమరీలో మిగిలిన వస్తువుల కాంపాక్ట్ అమరిక
మునుపటి దశలో తొలగించబడిన చనిపోయిన వస్తువులు ఒకదానికొకటి పక్కన ఉండవలసిన అవసరం లేదు. అందువల్ల, మీరు విచ్ఛిన్నమైన (సగం-ఖాళీ) మెమరీ స్థలాన్ని పొందే ప్రమాదం ఉంది.
కానీ, వాస్తవానికి, దీని కోసం అందించిన తరువాత, చెత్త కలెక్టర్ చనిపోయిన వస్తువులను తొలగించే సమయంలో మెమరీని కుదించడం సాధ్యమవుతుంది. మిగిలినవి కుప్ప ప్రారంభంలో ఒక పక్కనే ఉన్న బ్లాక్లో ఉంటాయి.
సంపీడన ప్రక్రియ కొత్త వస్తువులకు మెమరీని క్రమంగా కేటాయించడాన్ని సులభతరం చేస్తుంది.
GO TO FULL VERSION