1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>02_内存溢出与内存泄露</title> 6 </head> 7 <body> 8 9 <!-- 10 1. 内存溢出 11 * 一种程序运行出现的错误 12 * 当程序运行需要的内存超过了剩余的内存时, 就出抛出内存溢出的错误 13 2. 内存泄露 14 * 占用的内存没有及时释放 15 * 内存泄露积累多了就容易导致内存溢出 16 * 常见的内存泄露: 17 * 意外的全局变量 18 * 没有及时清理的计时器或回调函数 19 * 闭包 20 --> 21 22 <script type="text/javascript"> 23 // 1. 内存溢出 24 var obj = {} 25 for (var i = 0; i < 10000; i++) { 26 obj[i] = new Array(10000000) 27 console.log('-----') 28 } 29 30 // 2. 内存泄露 31 // 意外的全局变量 32 function fn() { 33 a = new Array(10000000) 34 console.log(a) 35 } 36 fn() 37 38 // 没有及时清理的计时器或回调函数 39 var intervalId = setInterval(function () { //启动循环定时器后不清理 40 console.log('----') 41 }, 1000) 42 43 // clearInterval(intervalId) 44 45 // 闭包 46 function fn1() { 47 var a = 4 48 function fn2() { 49 console.log(++a) 50 } 51 return fn2 52 } 53 var f = fn1() 54 f() 55 56 // f = null 57 58 </script> 59 </body> 60 </html>