[{"data":1,"prerenderedAt":256},["ShallowReactive",2],{"term-m\u002Fmemory-leak":3,"related-m\u002Fmemory-leak":244},{"id":4,"title":5,"acronym":6,"body":7,"category":224,"description":225,"difficulty":226,"extension":227,"letter":228,"meta":229,"navigation":230,"path":231,"related":232,"seo":238,"sitemap":239,"stem":242,"subcategory":6,"__hash__":243},"terms\u002Fterms\u002Fm\u002Fmemory-leak.md","Memory Leak",null,{"type":8,"value":9,"toc":218},"minimark",[10,15,19,23,31,35,207,211,214],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"A memory leak is when your program keeps grabbing more memory but never gives it back, like filling a bathtub without a drain. Eventually you run out of water (RAM) and everything slows down or crashes. It is sneaky because things work fine at first, then gradually get worse.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25,26,30],{},"A memory leak occurs when a program allocates memory that is never released back to the OS or runtime. In managed languages (JavaScript, Python), leaks happen through unintended references that prevent garbage collection — such as event listeners that are never removed or closures holding large objects. In C\u002FC++, leaks occur from forgetting to call ",[27,28,29],"code",{},"free()",". Long-running processes are most affected.",[11,32,34],{"id":33},"show-me-the-code","Show Me The Code",[36,37,42],"pre",{"className":38,"code":39,"language":40,"meta":41,"style":41},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Classic JS memory leak: event listener never removed\nfunction setup() {\n  const bigData = new Array(1000000).fill(\"data\");\n  document.addEventListener(\"click\", () => {\n    console.log(bigData[0]); \u002F\u002F bigData can NEVER be GC'd\n  });\n}\n\u002F\u002F Fix: store the listener and removeEventListener when done\n","javascript","",[27,43,44,53,71,123,154,185,195,201],{"__ignoreMap":41},[45,46,49],"span",{"class":47,"line":48},"line",1,[45,50,52],{"class":51},"sHwdD","\u002F\u002F Classic JS memory leak: event listener never removed\n",[45,54,56,60,64,68],{"class":47,"line":55},2,[45,57,59],{"class":58},"spNyl","function",[45,61,63],{"class":62},"s2Zo4"," setup",[45,65,67],{"class":66},"sMK4o","()",[45,69,70],{"class":66}," {\n",[45,72,74,77,81,84,87,90,94,98,101,104,107,109,112,116,118,120],{"class":47,"line":73},3,[45,75,76],{"class":58},"  const",[45,78,80],{"class":79},"sTEyZ"," bigData",[45,82,83],{"class":66}," =",[45,85,86],{"class":66}," new",[45,88,89],{"class":62}," Array",[45,91,93],{"class":92},"swJcz","(",[45,95,97],{"class":96},"sbssI","1000000",[45,99,100],{"class":92},")",[45,102,103],{"class":66},".",[45,105,106],{"class":62},"fill",[45,108,93],{"class":92},[45,110,111],{"class":66},"\"",[45,113,115],{"class":114},"sfazB","data",[45,117,111],{"class":66},[45,119,100],{"class":92},[45,121,122],{"class":66},";\n",[45,124,126,129,131,134,136,138,141,143,146,149,152],{"class":47,"line":125},4,[45,127,128],{"class":79},"  document",[45,130,103],{"class":66},[45,132,133],{"class":62},"addEventListener",[45,135,93],{"class":92},[45,137,111],{"class":66},[45,139,140],{"class":114},"click",[45,142,111],{"class":66},[45,144,145],{"class":66},",",[45,147,148],{"class":66}," ()",[45,150,151],{"class":58}," =>",[45,153,70],{"class":66},[45,155,157,160,162,165,167,170,173,176,179,182],{"class":47,"line":156},5,[45,158,159],{"class":79},"    console",[45,161,103],{"class":66},[45,163,164],{"class":62},"log",[45,166,93],{"class":92},[45,168,169],{"class":79},"bigData",[45,171,172],{"class":92},"[",[45,174,175],{"class":96},"0",[45,177,178],{"class":92},"])",[45,180,181],{"class":66},";",[45,183,184],{"class":51}," \u002F\u002F bigData can NEVER be GC'd\n",[45,186,188,191,193],{"class":47,"line":187},6,[45,189,190],{"class":66},"  }",[45,192,100],{"class":92},[45,194,122],{"class":66},[45,196,198],{"class":47,"line":197},7,[45,199,200],{"class":66},"}\n",[45,202,204],{"class":47,"line":203},8,[45,205,206],{"class":51},"\u002F\u002F Fix: store the listener and removeEventListener when done\n",[11,208,210],{"id":209},"when-youll-hear-this","When You'll Hear This",[16,212,213],{},"\"The server runs fine for an hour then crashes — probably a memory leak.\" \u002F \"Profile it with Chrome DevTools to find the memory leak.\"",[215,216,217],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":41,"searchDepth":55,"depth":55,"links":219},[220,221,222,223],{"id":13,"depth":55,"text":14},{"id":21,"depth":55,"text":22},{"id":33,"depth":55,"text":34},{"id":209,"depth":55,"text":210},"general","A memory leak is when your program keeps grabbing more memory but never gives it back, like filling a bathtub without a drain.","intermediate","md","m",{},true,"\u002Fterms\u002Fm\u002Fmemory-leak",[233,234,235,236,237],"Garbage Collection","Heap","Performance","Debug","Runtime",{"title":5,"description":225},{"changefreq":240,"priority":241},"weekly",0.7,"terms\u002Fm\u002Fmemory-leak","KAtB15j_FTP-rdDeMGTlo6Q109Yt76X7rirxl8bqMdI",[245,249,253],{"title":236,"path":246,"acronym":6,"category":224,"difficulty":247,"description":248},"\u002Fterms\u002Fd\u002Fdebug","beginner","Debugging is the process of finding and fixing the gremlins in your code. Something is broken, and you need to play detective — adding clues (console.",{"title":233,"path":250,"acronym":251,"category":224,"difficulty":226,"description":252},"\u002Fterms\u002Fg\u002Fgarbage-collection","GC","Garbage collection is your programming language's automatic cleanup crew. When you create variables and objects, they take up memory.",{"title":237,"path":254,"acronym":6,"category":224,"difficulty":226,"description":255},"\u002Fterms\u002Fr\u002Fruntime","Runtime is the environment where your code actually runs.",1776518249945]