update:内存泄露

This commit is contained in:
qianguyihao 2019-02-02 12:14:46 +08:00
parent 0d676fe666
commit 765da5e00c

View File

@ -741,13 +741,29 @@ function myModule() {
总而言之,你需要它,就是优点;你不需要它,就成了缺点。
## 内存泄漏内存溢出
## 内存溢出和内存泄露
### 内存溢出
**内存溢出**:一种程序运行出现的错误。当程序运行**需要的内存**超过了剩余的内存时, 就出抛出内存溢出的错误。
代码举例:
```javascript
var obj = {};
for (var i = 0; i < 10000; i++) {
obj[i] = new Array(10000000); //把所有的数组内容都放到obj里保存导致obj占用了很大的内存空间
console.log("-----");
}
```
### 内存泄漏
**内存泄漏**:占用的内存没有及时释放。内存泄露积累多了就容易导致内存溢出。
**内存泄漏****占用的内存**没有及时释放。
常见的内存泄露:
注意,内存泄露的次数积累多了,就容易导致内存溢出。
**常见的内存泄露**
- 1.意外的全局变量
@ -768,7 +784,6 @@ function myModule() {
fn();
```
情况2举例
```javascript
@ -780,43 +795,25 @@ function myModule() {
// clearInterval(intervalId); //清理定时器
```
情况3举例
```html
<script type="text/javascript">
function fn1() {
var arr = new Array[100000]; //这个数组占用了很大的内存空间
var a = 4;
function fn2() {
console.log(arr.length)
console.log(++a)
}
return fn2
}
var f = fn1()
f()
f = null //让内部函数成为垃圾对象-->回收闭包
// f = null //让内部函数成为垃圾对象-->回收闭包
</script>
```
### 内存溢出(一种程序运行出现的错误)
**内存溢出**:当程序运行需要的内存超过了剩余的内存时,就出抛出内存溢出的错误。
```javascript
//内存溢出
var obj = {}
for (var i = 0; i < 10000; i++) {
obj[i] = new Array(10000000); //把所有的数组内容都放到obj里保存导致obj占用了很大的内存空间
console.log('-----')
}
```