V8引擎占用的内存,64位机大概1.4G,32位机大概700多MB,实际比这大
内存分为新生代和老生代
新生代很小大概32MB,存临时数据,老生代存长期数据
新生代内存分为from和to,回收算法是,从from复制还活着的变量到to,然后对调from和to
老生代回收算法:标记死变量,清除变量,清除后留下了内存空位,所以要整理磁盘
什么时候回收?每次执行完代码/发现内存不够的时候
怎么判断一个变量回没回收?全局的等程序执行完/普通变量,没人引用
什么条件从新生代移到老生代:新生代复制后,占超过25%的to空间/对象已经经历一次回收
怎么优化内存:尽量不定义全局变量,定义了及时释放/注意闭包(闭包的变量是不是有可能大小无限增长)
怎么查看内存
浏览器端:window.performance.memory
Node端:process.memoryUsage()
Node可以手动触发垃圾回收:global.gc
Node可以设置新老生代内存:--max-old-space-size、--max-new-space-size