1.操作系统基础知识
注:所有东西都必须在内存里运行
1.开机和加载操作系统
- 开机过程:通电->读固件->加载开机程序->开机程序被加载到内存中运行(运行操作系统)
- 操作系统运行过程:加载内核->开启1号进程(PID=1)->1号进程开始后续进程,提供系统服务->登录->通过shell操作界面操作(windows是桌面鼠标操作,Linux是黑框框shell用命令操作)
2.进程&线程(Process&Thread)
- 渲染: html提供节点,css提供节点样式,把它们结合显示到屏幕上呈现称为渲染
- 引擎功能:渲染引擎,解析执行html/css;JS引擎,解析执行js
- 一般请求过程:下载,解析,执行
3.JS引擎功能和执行JS的内存
- document/setTimeout这些都是浏览器提供的API,而不是js本身的功能
- js代码在浏览器提供的运行环境(runtime env)执行
- 所有东西都在内存里运行,js代码也被下载到内存中运行
2.js瓜分内存
注:图示区域并不完整,还有调用栈,任务队列等区域。每种浏览器分配规则不同。数据区只存数据,不存变量名。
1.JS引擎内存分区
- 代码区:存js代码
- 不知什么区:存变量和运行环境(不同浏览器这个区名字不同)
- 数据区:数据全部存在红色部分。分为Stack栈数据区 ,Heap堆数据区
- Stack栈区:数据顺序存放,连续存储,存非对象
- Heap堆区:数据随机存放,链式存储,存对象
2.实例:js代码运行如何分配内存
- 等号就是直接复制
- 非对象:数字/字符串/布尔
- 对象:数组/函数/...