Skip to content

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

垃圾回收是阻塞式的,中断代码执行