2010-05-28 11 views
10

मुझे आश्चर्य है कि मतभेद क्या हैं या यदि यह दोनों में समान है।जावा में कचरा संग्रह कैसे किया जाता है और यह .NET से तुलना कैसे करता है?

+1

क्या लोग इसे अपने उद्देश्यों को समझाने के लिए "असली प्रश्न नहीं" देखभाल के रूप में बंद करने के लिए मतदान करेंगे? ऐसा नहीं है कि लड़के के पास 100 प्रतिनिधि हैं। – Josh

+0

भाग 1 ('जावा में जीसी कैसे किया जाता है) को एसओ पर दर्जनों प्रश्नों से ढंक दिया गया है। –

+0

@ एंड्रियास डायलन को उद्धृत करने के लिए "यदि वहां कोई मूल विचार है तो मैं अभी एक का उपयोग कर सकता हूं।" अब तक प्रत्येक प्रश्न SO पर पूछा गया है। लेकिन अगर लोग इसे डुप्लिकेट के रूप में बंद करना चाहते हैं, तो कम से कम मेनू से उस विकल्प को चुनें क्योंकि यह अन्य पदों के लिए ओपी संदर्भ देता है। – Josh

उत्तर

1

मुझे यह question on SO से link मिला जो जावा में कचरा संग्रह के अंतर और .NET/C# । अन्य जो इस प्रकार की जानकारी के लिए देख रहे हैं के लिए, यहाँ यह है-

जावा वस्तुओं में नए कीवर्ड का उपयोग ढेर पर बनाया जाता है। सी # में अधिकांश कक्षाएं नए कीवर्ड का उपयोग करके ढेर पर बनाई गई हैं। इसके अलावा बस के रूप में JVM वस्तुओं के विनाश का प्रबंधन करता है तो यह भी एक मार्क के माध्यम से CLR और कॉम्पैक्ट कचरा संग्रहण एल्गोरिथ्म करता

नोट: सी # भी ढेर आधारित कक्षाएं, मूल्य प्रकार कहा जाता है, जो पर चर्चा कर रहे हैं का समर्थन करता है नीचे और नीचे।

+0

http://www.brpreiss.com//books/opus5/html/page428.html की अच्छी जानकारी और मार्क और कॉम्पैक्ट एल्गोरिदम है। –

1

मुझे लगता है कि कोई वैचारिक अंतर नहीं है। चूंकि मेमोरी मॉडल अलग-अलग हैं (for example volative difference), प्राप्ति भिन्न हो सकती है।

+1

हो सकता है कि उच्च स्तर पर कोई वैचारिक अंतर न हो (यानी दोनों प्लेटफार्मों पर कचरा संग्रह एक ही कार्य है - उन वस्तुओं को साफ़ करें जिन्हें अब संदर्भित नहीं किया गया है), लेकिन ऐसा करने के लिए कई अलग-अलग एल्गोरिदम हैं, इसलिए इसमें बहुत अंतर हैं उदाहरण के लिए, सूर्य के जेवीएम के विभिन्न संस्करणों के बीच भी कार्यान्वयन। – Jesper

+0

आईएमएचओ अगर आपको चिंता करने की ज़रूरत है कि 99% में जीसी कैसे काम करता है तो आपको जीसी की आवश्यकता नहीं है। –

2

यह प्रश्न उत्तरदायी नहीं है।

सबसे पहले, प्रासंगिक विनिर्देशों में से कोई भी के बारे में कुछ भी नहीं कहेंगे जावा या .net को कचरा संग्रहण लागू करना चाहिए। तो जावा में या .NET में सचमुच कोई "तरीका नहीं है कि जीसी किया गया है"।

दूसरा, जीसी लागू करने का विवरण क्रमशः जावा और नेट के लिए विभिन्न विक्रेताओं के बीच अलग है, और किसी भी विक्रेता के लिए जीसी प्रत्येक प्लेटफ़ॉर्म, प्रत्येक प्रमुख संस्करण, मामूली संस्करण और यहां तक ​​कि प्रत्येक पैच संस्करण के साथ बदल सकता है। इसके शीर्ष पर, जावा के कुछ कार्यान्वयन आपको कमांड लाइन विकल्पों का उपयोग करके विभिन्न कचरा कलेक्टरों के बीच चयन करने की अनुमति देते हैं।

अंत में, यह वास्तव में कोई फर्क नहीं पड़ता कि जीसी या जावा कार्यान्वयन में जीसी लागू किया गया है, जो प्रदान करता है जिसे इसे एप्लिकेशन द्वारा आवश्यकतानुसार काम करने के लिए बनाया जा सकता है। और जावा के लिए, जवाब यह है कि यह ज्यादातर प्रकार के आवेदन के लिए कर सकता है। (अपवाद आमतौर पर कठिन वास्तविक समय आवश्यकताओं या बहुत तंग स्मृति बाधाओं के साथ सिस्टम/अनुप्रयोग होते हैं।)

+0

लेकिन कुछ पृष्ठभूमि सिद्धांत और मूलभूत बातें के लिए: http://stackoverflow.com/questions/2910224/java-garbage-collection/2922042#2922042 –

+0

@Andreas_D - जावा संदर्भ में एक संदर्भ के मुकाबले अधिक विस्तृत विवरण हैं। और दोनों संदर्भित पृष्ठ पुराने हैं। 1.4.1 के बाद से जावा जीसी निश्चित रूप से महत्वपूर्ण रूप से बदल गया है। –

संबंधित मुद्दे