1.javascript 内存管理
内存的基本概念
1、分配所需的内存
2、内存的读与写
3、不需要时将其释放
内存的生命周期
- 定义变量时就完成了内存分配
- 内存的释放依赖垃圾回收销毁,或者手动销毁
2.内存以两种形式存在 栈(stack) 堆(heap)
堆(heap)是没有结构的
数据可以任意存放。heap用于复杂数据类型(引用类型)分配空间,例如数组对象、object对象。
stack是有结构的
每个区块按照一定次序存放(后进先出),stack中主要存放一些基本类型的变量和对象的引用,存在栈中的数据大小与生存期必须是确定的。可以明确知道每个区块的大小,因此,stack的寻址速度要快于heap。
常见的 结构 – 递归运算。
3、什么是内存泄漏?
- 不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak)。
- 程序的运行需要内存。只要程序提出要求,操作系统或者运行时(runtime)就必须供给内存。
- 对于持续运行的服务进程(daemon),必须及时释放不再用到的内存。否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。
- 提供自动内存管理,减轻程序员的负担,这被称为”垃圾回收机制”
- 现在各大浏览器通常用采用的垃圾回收有两种方法:标记清除、引用计数。
4、什么是垃圾回收机制?
变量的生命周期
全局变量
- 他的生命周期会持续到页面关闭(这就涉及到了后面要总结的内存泄漏的一种方式)
局部变量
- 局部变量,在所在的函数的代码执行之后,局部变量的生命周期结束,他所占用的内存会通过垃圾回收机制释放
5、 如何使用 performance 工具
- FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数
6、 内存泄漏 -参考文件
7.性能监控EMS 平台
- 性能监控EMS 平台
- 谷歌浏览器 自带有 performance 性能 监控