Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 46

Garbage Collection

Garbage collection क्या है

Garbage collection Java द्वारा उस memory को अपने-आप मुक्त करना है जिसकी objects को अब ज़रूरत नहीं। C जैसी languages में आप हाथ से memory मुक्त करते हैं, जो error-prone है। Java में, JVM का garbage collector उन objects को ढूँढता है जिन्हें कोई इस्तेमाल नहीं करता और उनकी memory आपके लिए वापस लेता है।

💡 Java में आप कभी हाथ से memory मुक्त नहीं करते — garbage collector अपने-आप करता है।

Objects heap पर रहते हैं

new से बनाया हर object heap पर रहता है — JVM द्वारा manage की memory का क्षेत्र। जैसे आपका program चलता है, यह वहाँ कई objects बनाता है। Garbage collector heap पर काम करता है, memory उपलब्ध रखने को अब reachable न रहे objects साफ़ करके।

Object कब collect होता है

Object collection के योग्य तब बनता है जब कोई उसे reference न करे:

  • उसका variable null set हो।
  • Variable scope से बाहर जाए (method ख़त्म हो)।
  • यह दूसरे object से बदल जाए।

एक बार unreachable होने पर, garbage collector उसकी memory वापस ले सकता है — आप ठीक कब का नियंत्रण नहीं करते।

एक सरल उदाहरण

String s = new String("Hello");   // heap पर object
s = null;                         // अब unreachable
// पुराना "Hello" object GC के योग्य है

s = null set करना "Hello" object का इकलौता reference हटा देता है, तो कुछ उसकी ओर इशारा नहीं करता। यह अब garbage collection के योग्य है, और JVM collector चलाने पर उसे मुक्त कर देगा।

System.gc और finalize

System.gc();   // GC चलाने का सुझाव, आदेश नहीं

System.gc() सिर्फ़ JVM से garbage collection चलाने को कहता है; JVM तय करता है क्या और कब। पुरानी finalize() method (object collect होने से पहले call होती थी) deprecated है — इस्तेमाल न कीजिए।

यह क्यों मदद करता है

  • कम bugs — memory मुक्त करना भूलना नहीं, double-frees नहीं।
  • कोई मैन्युअल काम नहीं — आप logic पर ध्यान देते हैं, memory bookkeeping पर नहीं।
  • सुरक्षित programs — बड़े systems को Java भरोसेमंद होने का बड़ा कारण।

Trade-off है memory ठीक कब मुक्त होती है इसका कम सटीक नियंत्रण, जो ज़्यादातर programs को ठीक है।

आम गलतियाँ

  • यह सोचना आपको memory मुक्त करनी है। Java अपने-आप करती है।
  • System.gc() पर भरोसा। यह सिर्फ़ सुझाव है, गारंटी नहीं।
  • finalize() इस्तेमाल करना। यह deprecated और अविश्वसनीय है।
  • अनचाहे references रखना। अब भी referenced objects कभी collect नहीं होते — memory leak।

सारांश

  • Garbage collection अनुपयोगी objects की memory अपने-आप मुक्त करता है।
  • Objects heap पर रहते हैं, JVM द्वारा managed।
  • Object तब योग्य होता है जब कोई उसे reference न करे।
  • System.gc() सिर्फ़ सुझाव है; finalize() deprecated है।
  • यह memory bugs कम करता है — बस अनचाहे references छोड़ दीजिए।

आगे, cleanup keywords सीखिए final, finally और finalize में, या objects दोहराइए classes और objects में।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

Java में garbage collection क्या है?
Garbage collection Java द्वारा अब ज़रूरत न रहे objects की इस्तेमाल memory अपने-आप ढूँढना और मुक्त करना है। C जैसी languages के विपरीत, आप हाथ से memory मुक्त नहीं करते — JVM का garbage collector आपके लिए करता है।
Object garbage collection के योग्य कब बनता है?
Object तब योग्य बनता है जब कोई उसे reference न करे — जैसे, जब आप उसका variable null set करें या वो scope से बाहर जाए। एक बार unreachable होने पर, garbage collector उसकी memory वापस ले सकता है।
Java objects memory में कहाँ रहते हैं?
Objects heap पर रहते हैं, JVM द्वारा manage की memory का क्षेत्र। Garbage collector heap पर काम करता है, space मुक्त करने को अब reachable न रहे objects हटाकर।
क्या Java में garbage collection force कर सकता हूँ?
आप System.gc() से सुझा सकते हैं, पर यह सिर्फ़ request है — JVM तय करता है असल में कब चलाना है। व्यवहार में आप शायद ही इसे call करते हैं; garbage collector ज़रूरत अनुसार अपने-आप चलता है।
क्या Java में हाथ से memory मुक्त करनी पड़ती है?
नहीं। Java garbage collection से memory अपने-आप manage करती है, जो manual-memory languages में आम कई memory bugs रोकता है। आप बस उन objects को reference करना बंद करते हैं जिनकी ज़रूरत नहीं।
← Back to Java Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicSerialization आपकी प्रगति: 46 / 61 (75%) · Lesson 47 / 61 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें