update:内存泄露
This commit is contained in:
parent
0d676fe666
commit
765da5e00c
@ -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('-----')
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user