2012-01-25 12 views
7

एक कार्यकर्ता पाश की तरह कुछ है पर विचार करें:क्या डी में अपरिवर्तनीय डेटा "जला" है?

... 
auto msg = new immutable(DataWrittenMsg)(bytesWritten); 
masterTid.send(msg); 
... 

इस धीरे धीरे लेकिन निश्चित रूप से, सभी रैम खा जाएगा समय के रूप में Inf तक पहुँच जाता है? या अप्रयुक्त अपरिवर्तनीय डेटा जीसी द्वारा एकत्र किया जा सकता है?

(मैं TDPL Ch. 13 पढ़ रहा हूँ और मैं धारणा एक बार अपरिवर्तनीय डेटा यह सेट नहीं कभी नहीं प्राप्त कर सकते हैं सेट कर दिया जाता है?)

उत्तर

10

नहीं, जीसी अभी भी unreferenced वस्तुओं लेने, उनके constness की परवाह किए बिना होगा।

"एक बार अपरिवर्तनीय डेटा सेट होने पर यह कभी भी अनसेट नहीं हो सकता" - यह केवल तार्किक अर्थ में ही है। मान लें कि आपके प्रोग्राम की मेमोरी सुरक्षा को समझौता नहीं किया गया है, आपके प्रोग्राम तक पहुंचने वाली सभी अपरिवर्तनीय ढेर-आवंटित ऑब्जेक्ट्स तब तक नहीं बदलेगी जब तक वे पहुंच योग्य न हों, भले ही उन ऑब्जेक्ट्स पर वास्तविक स्मृति पुन: उपयोग की जा सके।

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