JavaScript Garbage Collection : Memory Management in JavaScript

Other Blogs

Image could not load

JS Memory Management

Introduction

जब हम JavaScript में code लिखते हैं, तो हम variables, objects, और functions create करते हैं। इन सब के लिए memory allocation होती है। लेकिन, जैसे ही ये objects या variables use में नहीं रहते, उनकी memory automatically free कर दी जाती है।

इस process को Garbage Collection कहा जाता है। इस blog में हम जानेंगे कि JavaScript में Garbage Collection कैसे काम करता है और ये memory को manage करने में कैसे मदद करता है।

JavaScript Memory Management

JavaScript में memory management का मतलब है कि जब भी हम कोई variable, object या function create करते हैं, JavaScript उसके लिए memory allocate करता है। जब वो memory use में नहीं रहती, तो उसे automatically free कर दिया जाता है, ताकि memory leak न हो। ये काम JavaScript का Garbage Collector करता है।

What is Garbage Collection in JS ?

Garbage Collection एक automatic process है जो उन objects की memory को free करता है जो अब program में use नहीं हो रहे होते। Garbage Collection का main काम ये ensure करना होता है कि जितनी भी memory allocate की गई है, वो efficiently use हो और unnecessary memory का use न हो।

JS Types of Garbage Collection Algorithms

1. Mark-and-Sweep Algorithm

Mark Phase : सबसे पहले, Garbage Collector पूरे object graph को traverse करता है और reachable objects को mark करता है। इसका मतलब है कि वो objects जो अभी भी code में use हो रहे हैं, उन्हें mark कर दिया जाता है।

Sweep Phase : जो objects mark नहीं हुए होते, उन्हें remove कर दिया जाता है और उनकी memory free कर दी जाती है।

function example() { let user = { name: "Rahul" }; // 'user' के लिए memory allocate होती है // यहाँ 'user' object का use हो रहा है user = null; // अब 'user' का कोई reference नहीं है, तो Garbage Collector इसे clean कर देगा } example();

2. JS Reference Counting

इस algorithm में हर object के पास एक count होता है कि कितनी बार उसका reference लिया गया है। अगर कोई object का reference 0 हो जाता है, तो उसे memory से remove कर दिया जाता है।

let obj1 = { name: "John" }; let obj2 = obj1; // Reference count is 2 obj1 = null; // Reference count is 1 obj2 = null; // Reference count is 0, so object is deleted

Avoid Memory Leaks In JavaScript

Memory leaks तब होते हैं जब memory को allocate तो किया गया हो, लेकिन उसे कभी free नहीं किया जाता। कुछ common scenarios जहाँ memory leaks हो सकते हैं -

Global Variables : Global variables का lifetime तब तक रहता है जब तक browser window open होती है। अगर आपने unnecessary global variables create किए हैं, तो वो memory leak का कारण बन सकते हैं।

var globalVar = "I am global"; // Global variable, जो पूरे lifetime में memory hold करेगा

Uncleared Intervals or Timeouts : अगर आपने intervals या timeouts set किए हैं और उन्हें clear नहीं किया, तो वो भी memory leaks का कारण बन सकते हैं।

function startTimer() { let timer = setInterval(function() { console.log("Running..."); }, 1000); // Memory leak को avoid करने के लिए clear करना ज़रूरी है clearInterval(timer); } startTimer();

Closures : Closures powerful होते हैं, लेकिन अगर उनका सही से use न किया जाए तो ये memory leaks का कारण बन सकते हैं।

function outerFunction() { let largeData = new Array(10000).fill("Data"); return function innerFunction() { console.log(largeData); }; } let closureFunc = outerFunction(); // largeData memory में hold किया गया है
Best Practices
  • Minimize  Global Variables : कोशिश करें कि जितना हो सके global variables का use न करें।

  • Remove Event Listeners : Event listeners को memory leak से बचाने के लिए detach करना ज़रूरी है।

  • Clear Intervals & Timeouts : जब उनका काम पूरा हो जाए, तो उन्हें clear करना न भूलें।

  • Use of Closures  Functions : Closures का सही से उपयोग करें ताकि unnecessary data memory में न रहे।

Conclusion

JavaScript में Garbage Collection एक बहुत important concept है जो memory management को आसान बनाता है।

हालांकि, ये automatic है, लेकिन developers को भी ध्यान रखना होता है कि उनका code memory leaks create न करे। इस blog में हमने समझा कि Garbage Collection कैसे काम करता है और किन practices को follow करना चाहिए ताकि memory efficient तरीके से use हो सके।

Must read
Recent Blogs

Loading ...

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook

Your Thought ?

Please wait . . .

    0 Comment(s) found !