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>