2010-02-24 14 views
35

यह कथन क्या है, "ByteArrayOutputStream को बंद करने का कोई प्रभाव नहीं है" (http://java.sun.com/javase/6/docs/api/java/io/ByteArrayOutputStream.html#close()) का मतलब है?एक ByteArrayOutputStream को बंद करने का कोई प्रभाव नहीं है?

मैं यह सुनिश्चित करना चाहता हूं कि ByteArrayOutputStream में स्मृति जारी हो जाए। क्या ByteArrayOutputStream.close() वास्तव में स्मृति जारी करता है?

धन्यवाद।

उत्तर

66

क्या ByteArrayOutputStream.close() वास्तव में स्मृति को रिलीज़ करता है?

नहीं। यह बिल्कुल कुछ नहीं करता है। आप इसके स्रोत कोड देख सकते हैं:

public void close() throws IOException { 
} 

स्मृति जारी, यकीन है कि वहाँ यह करने के लिए कोई संदर्भ हैं बनाने के लिए और कचरा कलेक्टर अपने काम करते हैं करने के लिए। किसी भी अन्य सामान्य वस्तु की तरह।

फ़ाइल- और सॉकेट-आधारित धाराएं विशेष हैं क्योंकि वे गैर-स्मृति ओएस संसाधन (फ़ाइल हैंडल) का उपयोग करते हैं जिन्हें आप स्वतंत्र रूप से स्मृति से बाहर निकाल सकते हैं। यही कारण है कि उन्हें स्पष्ट रूप से बंद करना महत्वपूर्ण है। लेकिन यह पूरी तरह स्मृति-आधारित ByteArrayOutputStream पर लागू नहीं होता है।

+4

(सी ढेर संसाधन भी महत्वपूर्ण हैं - उदाहरण के लिए, दुर्भाग्यवश 'java.util.zip' में स्ट्रीम करें।) –

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