जब भी मैं कचरा कलेक्टर का अध्ययन करता हूं, मैं ऑब्जेक्ट ग्राफ़ शब्द सुनता हूं। इसका क्या मतलब है?जावा में ऑब्जेक्ट ग्राफ़ क्या है?
उत्तर
ऑब्जेक्ट्स में अन्य ऑब्जेक्ट्स के संदर्भ हैं जो बदले में प्रारंभिक ऑब्जेक्ट सहित अधिक ऑब्जेक्ट्स के संदर्भ हो सकते हैं। यह वस्तुओं का एक ग्राफ बनाता है, पहुंच योग्यता विश्लेषण में उपयोगी है। उदाहरण के लिए, यदि प्रारंभिक वस्तु पहुंच योग्य है (कहें कि यह थ्रेड के स्थानीय ढेर में है) तो ग्राफ में सभी ऑब्जेक्ट पहुंच योग्य हैं और सटीक कचरा कलेक्टर इन वस्तुओं में से किसी भी फसल को फसल नहीं कर सकता है। इसी तरह, यदि हम सभी पहुंच योग्य वस्तुओं की एक सूची बनाते हैं, तो जीवित वस्तुओं (जड़ों) के एक सेट से शुरू होता है, अन्य सभी वस्तुएं कचरा होती हैं - संग्रह के लिए उचित खेल।
वस्तु ग्राफ मूल रूप से वस्तुओं
यह निर्धारित करने के लिए जो वस्तुओं पहुंचा जा सकता है और प्रयोग किया जाता है जो निर्भरता ग्राफ है जो नहीं, ताकि सभी तक नहीं पहुंचा जा वस्तुओं कचरा संग्रहण के लिए पात्र बनाया जा सकता है।
कोई व्यक्ति इस उत्तर को वोट क्यों देगा :) –
मुझे नहीं पता। मैं डाउनवोट करने के इच्छुक था क्योंकि आपने निर्भरता ग्राफ को निर्भरता ग्राफ के रूप में वर्णित किया है :-) –
एक 'ऑब्जेक्ट ग्राफ' आपके ऑब्जेक्ट मॉडल (आपके प्रोग्राम में कक्षाएं) और उनके इंटरकनेक्शन से ऑब्जेक्ट्स के सभी उदाहरणों की अवधारणा है। उदाहरण के लिए
लें:
आप एक उदाहरण, Foo myFoo
बनाने के लिए और फिर Bar myBar
का एक उदाहरण बना सकते हैं और कनेक्ट उन्हें थे, तो दो वर्गों
Class Foo
{
String aString = "foo";
Bar aBar;
}
Class Bar
{
String aString = "boo";
}
है, myFoo.aBar = myBar;
, अपने वस्तु ग्राफ होगा Bar
के एक उदाहरण के संदर्भ में Foo
का एक उदाहरण शामिल है।
कचरा कलेक्टर अनिवार्य रूप से ऑब्जेक्ट ग्राफ़ का उपयोग करता है यह निर्धारित करने के लिए कि स्मृति में कौन से उदाहरण अभी भी प्रोग्राम से आवश्यक हैं और संभावित रूप से प्रोग्राम द्वारा आवश्यक हैं, और कौन से उदाहरण अब उपलब्ध नहीं हैं और इसलिए हटाया जा सकता है। wikipedia पर
किसी ने इसे और अधिक अर्थपूर्ण डालता है मुझ से:
वस्तु उन्मुख अनुप्रयोगों परस्पर वस्तुओं की जटिल जाले होते हैं। ऑब्जेक्ट्स द्वारा ऑब्जेक्ट्स एक दूसरे से जुड़े होते हैं या तो एक ऑब्जेक्ट या तो किसी अन्य ऑब्जेक्ट का स्वामित्व या किसी अन्य ऑब्जेक्ट पर संदर्भ रखते हैं। ऑब्जेक्ट्स के इस वेब को ऑब्जेक्ट ग्राफ़ कहा जाता है और यह अधिक सार संरचना है जो किसी अनुप्रयोग के स्थिति पर चर्चा करने में उपयोग की जा सकती है।
हम किस बारे में बात कर रहे हैं वह एक निर्देशित ग्राफ की गणितीय धारणा है जिसमें नोड्स को जोड़ने वाले नोड्स और किनारों का समावेश होता है। एक ऑब्जेक्ट ग्राफ़ कुछ ग्राफ होता है जिनके नोड्स ऑब्जेक्ट होते हैं, और जिनके किनारों के बीच रुचि के संबंध होते हैं।
जावा कचरा कलेक्टर के मामले में, चिंता का ऑब्जेक्ट ग्राफ़ पहुंच योग्य वस्तुओं का ग्राफ है। इस आलेख में, नोड्स जावा ऑब्जेक्ट्स हैं, और किनारें स्पष्ट या निहित संदर्भ हैं जो किसी चल रहे प्रोग्राम को किसी अन्य ऑब्जेक्ट से "पहुंचने" की अनुमति देती हैं। (एक अंतर्निहित संदर्भ के उदाहरण के लिए, किसी ऑब्जेक्ट से क्लास ऑब्जेक्ट में एक अंतर्निहित संदर्भ है, और इसलिए क्लास स्टेटिक्स और उसके कोड को पकड़ने वाले ढेर ऑब्जेक्ट्स में ... लेकिन मैं digress।)
जैसा कि @ कंधरा पटना ने समझाया है, कचरा संग्रह पहुंचने योग्य ग्राफ को पार करने के द्वारा काम करता है जिसमें सभी ऑब्जेक्ट्स शामिल होते हैं जिन्हें शुरुआती बिंदुओं में से एक से प्राप्त किया जा सकता है; जीसी शब्दावली में "रूट सेट"। कोई भी ऑब्जेक्ट जो इस ग्राफ़ ट्रैवर्सल में नहीं मिलता है, अब गणना को प्रभावित नहीं कर सकता है, और इसलिए कचरा इकट्ठा करने योग्य है।
जैसा कि हम जानते हैं कि ऑब्जेक्ट्स कक्षा का उदाहरण हैं। किसी ऑब्जेक्ट में अन्य ऑब्जेक्ट (पते के लिए पॉइंटर्स का उपयोग) का संदर्भ हो सकता है। इन ऑब्जेक्ट्स में किसी अन्य ऑब्जेक्ट का संदर्भ हो सकता है और इसलिए ऑब्जेक्ट्स संदर्भों के एक पदानुक्रम में एक दूसरे के संदर्भ में हो सकता है।
यह ऑब्जेक्ट ग्राफ़ है।
ऑब्जेक्ट ग्राफ हमारे एप्लिकेशन/सॉफ़्टवेयर की कक्षाओं के उदाहरणों का एक नेटवर्क है जो वर्तमान में स्मृति में मौजूद है। देखने के लिए
क्लिक करें छवि: http://blog.ploeh.dk/content/binary/Windows-Live-Writer/Compose-object-graphs-with-confidence_921A/Tree_1.png
यह भी एक छोटे से एक वस्तु ग्राफ वस्तुओं की एक लंबी श्रृंखला हो सकती है। उदा। कहें कि हमारे पास एक आवेदन में पेटडॉग, मालिक, पेटकेनेल जैसी कक्षाएं हैं। अब, पेटडॉग के मालिक हैं, मालिक के पास एक या कई पेटडॉग हैं, पेटडॉग को पेटकेनेल से प्रशिक्षित किया जाता है और पेटकेनेल कई पेडडॉग ट्रेन करता है। अब ऑब्जेक्ट ओरिएंटेड दृष्टिकोण में उन रिश्ते के कार्यान्वयन पर हम, एक मालिक (आपको बताता है: एक मालिक/मालिक वर्ग का ऑब्जेक्ट) कई पेटडॉग उदाहरणों (यदि आपके पास केवल एक पालतू जानवर का संदर्भ है) , फिर एक पेटडॉग अपने विशेष मालिक के उदाहरण/वस्तु के संदर्भ में संदर्भित करता है (जो कि आप अपने कुत्तों के मामले में हैं, श्री जॉन को उनके कुत्ते द्वारा संदर्भित किया जाएगा), आपने अलग-अलग केनेल क्लब से पालतू कुत्ते को खरीदा होगा (जहां कुत्ते हैं प्रशिक्षित और बेचा जाता है) तो पेटडॉग उदाहरण/ऑब्जेक्ट संदर्भों में से प्रत्येक/अपने विशेष केनेल क्लब से जुड़ा हुआ है। यह एक-दूसरे से संबंधित वस्तुओं का एक जटिल नेटवर्क बनाता है।
यदि आप अपने नोट/स्केच बुक में सर्कल/स्क्वायर (या किसी भी आकार) के रूप में प्रत्येक उदाहरण/ऑब्जेक्ट्स (पेटडॉग, मालिक, पेटकेनेल की प्रत्येक वस्तु) का प्रतिनिधित्व करते हैं और ऑब्जेक्ट को लिंक करने वाले व्यक्ति का प्रतिनिधित्व करने के लिए तीर या रेखा खींचते हैं (संदर्भ) किस ऑब्जेक्ट के साथ आप ऑब्जेक्ट ग्राफ़ बनाते हैं।
कभी-कभी ऐसा होता है कि जब आप किसी भी वर्ग के उन उदाहरणों के बीच लिंक हटाते या बदलते हैं तो कुछ उदाहरणों को किसी भी अन्य उदाहरणों से संदर्भित नहीं किया जा सकता है जिसे कचरा कलेक्टर द्वारा हटा दिया जाएगा।
- 1. ऑब्जेक्ट ग्राफ़
- 2. ऑब्जेक्ट ग्राफ़ क्या है और मैं एक
- 3. जावा क्रमबद्धता, क्रियो और ऑब्जेक्ट ग्राफ़
- 4. 2 जटिल ऑब्जेक्ट ग्राफ़
- 5. जटिल ऑब्जेक्ट ग्राफ़
- 6. ग्राफ़ डेटा (जावा)
- 7. जावा में स्टेटलेस ऑब्जेक्ट क्या है?
- 8. SAXException2: ऑब्जेक्ट ग्राफ़ में एक चक्र का पता लगाया गया है। मामला क्या है?
- 9. फेसबुक: ग्राफ़ एपीआई जावा पुस्तकालय
- 10. जावा कलेक्शन एपीआई में ग्राफ़ कार्यान्वयन क्यों नहीं है?
- 11. नेटवर्कक्स ग्राफ़ ऑब्जेक्ट को सॉर्ट करना पायथन
- 12. जावा: जावा ऑब्जेक्ट को जावा ऑब्जेक्ट में जावा में स्ट्रिंग ऑब्जेक्ट में कैसे परिवर्तित करें?
- 13. हास्केल में ऑब्जेक्ट ग्राफ़ कैसे प्रबंधित करते हैं?
- 14. स्कैला ऑब्जेक्ट के जावा समकक्ष क्या है?
- 15. ग्राफ़
- 16. ग्राफ़
- 17. ग्राफ़
- 18. ग्राफ़
- 19. जावा में फंक्शन ऑब्जेक्ट
- 20. के बीच क्या अंतर है? और जावा जेनरिक में ऑब्जेक्ट?
- 21. जावा ऑब्जेक्ट ग्राफ विज़िटर लाइब्रेरी
- 22. क्या TortoiseHg में ग्राफ़ खींचे जाने का कोई तरीका है?
- 23. जावा कॉल ग्राफ़ कैसे उत्पन्न करें
- 24. जावा मोंगोडीबी ऑब्जेक्ट वर्जनिंग
- 25. जावा में मॉनिटर क्या है?
- 26. जावा में सत्र क्या है?
- 27. जावा: ऑब्जेक्ट क्लास में एक कन्स्ट्रक्टर है?
- 28. (जावा) ऑब्जेक्ट इनपुटपुट ऑब्जेक्ट
- 29. क्या डाटा ऑब्जेक्ट ऑब्जेक्ट वैल्यू ऑब्जेक्ट के समान है?
- 30. क्लास ऑब्जेक्ट (java.lang.Class) क्या है?
पुन "सभी नहीं": मुझे लगता है कि, सभी वस्तुओं के पास अन्य वर्गों के संदर्भ हैं, कम से कम उनके वर्ग के संदर्भ में। – Thilo
@ थिलो: अच्छा बिंदु। मैंने "सभी नहीं" हटा दिया है। –
शायद प्राचीन प्रकार के सरणी नहीं ... – Thilo