• v8 引擎的内存


    一、nodejs查看内容使用情况:

    process.memoryUsage()
    

      

     单位为 Btye 

    转化函数:

    var format = function(bytes) { 
                  return (bytes/1024/1024).toFixed(2)+'MB'; 
            };
    

      

    heapTotal 和 heapUsed 代表 V8 的内存使用情况。 

    external 代表 V8 管理的,绑定到 Javascript 的 C++ 对象的内存使用情况。 

    rss 是驻留集大小, 是给这个进程分配了多少物理内存(占总分配内存的一部分),这些物理内存中包含堆、代码段、以及栈。

    对象、字符串、闭包等存于堆内存。 变量存于栈内存,实际的 JavaScript 源代码存于代码段内存。

    二、浏览器的查看

    window.performance.memory
    

      

    三、内存的分布

    新生代内存,是采用循环回收,即: 

    从 from 取出 活着 的变量,放入 to , 清空 from 内存,然后 取出 to 里面 活着 的变量,存入 from , 清空 to 内存, 如此交替执行。

    老生代内存,当新生代内存占用超过 一定 百分比, 开始存入老生代。

    老生代内存是每次标记出活着的变量,删掉死去的, 然后整理内存,将碎片合并。

    四、内存的使用

    1、尽量不声明全局变量

    2、声明了全局变量,当不再使用的时候,置为 undefined 或者 null

    五、误区

    闭包会造成内存泄漏

    实际上,这是 javascript 权威指南,对 ie5 的一种说法,在 v8 里面是不存在的,包括目前的新浏览器,都不存在。

    具体的,可以自己用上面获取内存的办法,去比对。闭包对内存发现基本没有影响。

  • 相关阅读:
    C#常用笔记.cs
    OpenFileDialog 和 FolderBrowserDialog
    C#双缓存.cs
    数据库设计范式
    js 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果
    Study Plan The Sixth Day
    Study Plan The First Day
    Study Plan The Seventh Day
    Study Plan The Second Day
    C#CustomAttribute和泛型约束 应用于经典数据处理适配
  • 原文地址:https://www.cnblogs.com/muamaker/p/11695607.html
Copyright © 2020-2023  润新知