6

मैं एडब्ल्यूटी/स्विंग के Window वर्ग के dispose() फ़ंक्शन के बारे में अधिक समझने की कोशिश कर रहा हूं और यह क्या करता है। घटनाओं की निम्नलिखित श्रृंखला की कल्पना करें:क्या जावा गैर-डिस्पोजेड सिस्टम जीयूआई संसाधनों का पुन: उपयोग कर सकता है?

  1. एक विंडो व्युत्पन्न एक्स का एक उदाहरण ए गुंजाइश से बाहर जाने के बाद कचरा इकट्ठा किया गया है। निपटान कचरा संग्रह से पहले बुलाया गया है।
  2. एक्स, बी का एक नया उदाहरण बनाया और दिखाया गया है।

करता बी गैर निपटारा संसाधनों को पीछे छोड़ दिया के बाद एक GC'd था का उपयोग करें?

इसके अलावा, विंडो व्युत्पन्न जेड के लिए, यदि ज़ेड के कई उदाहरण हैं, तो क्या जेआरई उनके बीच विंडो संसाधनों का पुन: उपयोग करने में सक्षम है?

उत्तर

1

यह कैसे काम करता है लेकिन स्मृति की एक सामान्य समझ से अधिक है:

संसाधनों का निपटारा नहीं किया गया है, तो आप उन्हें उपयोग नहीं कर सकते क्योंकि वे अभी भी हाथ में लिया जा रहा है। जब संसाधनों का निपटारा नहीं किया जाता है/कचरा इकट्ठा/मुक्त किया जाता है तो वे उपयोग योग्य नहीं होते हैं क्योंकि उस स्मृति का उपयोग करने के लिए कुछ और है। हालांकि, एक बार यह गुंजाइश से बाहर हो जाने के बाद, इसे वास्तव में निपटान किया जाना चाहिए। यदि यह नहीं है, तो यह एक है लेकिन JVM में जिसके परिणामस्वरूप memory leak होगा।

दूसरे भाग के लिए, यदि आप वस्तुओं के बीच स्मृति के ब्लॉक का मतलब है, तो यह सब पर्याप्त है कि पर्याप्त कमरा है या नहीं। दोबारा, मैं 100% नहीं हूं कि JVM स्मृति कैसे प्रबंधित करता है, लेकिन यदि आपको स्मृति के दो ब्लॉक की आवश्यकता है और Z1 और Z2 के बीच केवल एक ब्लॉक है तो नहीं, इसे स्मृति में एक संगत स्थान की आवश्यकता होगी।

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