2011-09-13 13 views
5

संभव डुप्लिकेट ढेर स्मृति से अनलोड करता है:
Unloading classes in java?जब एक वर्ग

कब होता स्मृति से एक वर्ग उतारना?

कक्षा को लोड करने के लिए हम Class.forName("NameOfClass"); पर कॉल कर सकते हैं या जब हम किसी वर्ग का ऑब्जेक्ट बनाते हैं, तो कक्षा मेमोरी में लोड हो जाती है।

+0

के बारे में था: क्या परिभाषित है जब यह उतार दिया जा सकता है जवाब देने के लिए, लेकिन Google पर पहला लिंक SO पर यह प्रश्न था: [जावा में कक्षाएं उतारना?] (http://stackoverflow.com/questions/148681/unloading-classes-in-java) –

+0

आपको इसकी आवश्यकता क्यों है? बीटीडब्लू, जो कि जेवीएम पर निर्भर है और शायद नहीं किया जा सकता है (कुख्यात परमैन समस्या देखें) – Thomas

उत्तर

1

में सरल शब्दों: जब वर्ग (और उनके उदाहरण) के सभी संदर्भ निकाल दिए जाते हैं

क्लास उतार दिया जाता है और इस्तेमाल किया classloader कचरा एकत्र है।

+0

नहीं, यह _might_ कचरा संग्रह के लिए समझदार हो लेकिन कुछ मामलों में कक्षा वास्तव में कभी एकत्र नहीं की जा सकती है। – Thomas

+0

सही नहीं है। एक कक्षा (केवल) को उतार दिया जाएगा यदि क्लासलोडर को कचरा इकट्ठा किया जाता है। आप * ऑब्जेक्ट्स/इंस्टेंस * का जवाब दे रहे हैं। –

+0

सहमत हैं, कक्षा के संदर्भ और क्लासलोडर को ही हटा दिया जाना चाहिए। – Muse

2

क्लासेस

कक्षा एक classloader द्वारा लोड किया जाएगा और जब कि classloader कचरा एकत्र है अनलोड कर (हो सकता है) होगा। सामान्य अनुप्रयोगों में, जहां हमें क्लासलोडर्स की परवाह नहीं है: कक्षाएं कभी भी अनलोड नहीं की जाएंगी।

वर्गों के उदाहरण/वस्तुओं

वस्तुओं ढेर पर बनाया जाएगा और नष्ट कर दिया जब कचरा कलेक्टर का पता लगाता है, कि उदाहरण के लिए कोई संदर्भ है कि वहाँ/अब और आपत्ति है।

(बस संक्षेप में, बेहतर विवरण: प्रश्न Unloading classes in Java? देखें)

+1

जेडीके द्वारा प्रदान की गई जावा कक्षाएं (उदा। 'Java.util.ArrayList' और' java.math.BigIntege'r) बिल्कुल अनलोड हो जाएं? – Pacerier

0

जब वास्तव में एक वर्ग उतार दिया जाएगा बस के रूप में जब वास्तव में एक वस्तु कचरा एकत्र किया जा सकता, परिभाषित नहीं है परिभाषित नहीं है।

एक वर्ग या इंटरफ़ेस उतार दिया जा सकता है अगर और सिर्फ़ अगर इसकी परिभाषित वर्ग लोडर कचरा कलेक्टर द्वारा पुन: दावा किया जा सकता है

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