V8引擎垃圾回收机制与node.js模块基础应用

1.原理

         程序在使用过程中会使用到很多数据,这些数据分为原始数据和对象类型数据。对于原始数据都是由自身来控制的,所以回收指的是堆区里面的对象类型数据,而且V8采用分代回收的思想,主要讲内存分为新生代和老生代,针对不同分代采用不同的GC算法。

2.新生代回收机制

         新生代回收机制指的是存活时间较短的对象,回收过程中采用复制算法+标记整理模式。内存被区分为两个等大小的空间,一个空间使用From空间,一个空间的To空间

3.老生代回收机制

         老生代回收机制指的是存放的对象存活的时间较长,且空间庞大,所以不适合复制算法。采用的是标记清除,标记整理,增量标记算法

4.两者之间的对比

         1.新生代区域垃圾回收使用空间换时间
         2.老生代区域垃圾回收不适合复制算法

5.node.js模块应用小例子

         通过文件的读取操做将文件的信息进行读取,并个文件设置一些属性,将这些属性放在一个对象里面,参考代码如下

// 导入文件fs模块和path模块
const fs = require('fs');
const path = require('path');


// 获取到hwork1这个目录
const filename = path.resolve(__dirname);

// 创建一个空对象  存放文件01.js
const obj1 = {}
// 创建一个空对象  存放文件hwork1_1
const obj2 = {}
// 属性数组
const arr = ['name','ext','isFile','size','createTime','updateTime'];

// 读取hwork1这个目录里所有的子目录和文件,包括hwork1_1文件夹和01.js  02.js文件
async function test(){

    const paths = await fs.promises.readdir(filename)
    // 得到01.js这个文件
    const filejs = paths[0];
    // 01.js文件名
    const name1 = '01';

    // 01.js后缀名
    const ext1 = path.extname(filejs)

    // 得到整个01.js这个文件的详细参数
    const stats1 = await fs.promises.stat(filejs)
    // 判断是否是一个文件
    const isflie = stats1.isFile()
    // 判断文件大小
    const siz = stats1.size
    // 文件创建时间
    const createtime = stats1.birthtime
    // 文件修改时间
    const updatetime = stats1.mtime

     // 得到hwork1_1这个文件
     const filehw1_1 = paths[1];

     // hwork1_1文件名
     const name2 = 'hwork1_1';
 
     // hwork1_1后缀名
     const ext2 = path.extname(filehw1_1)
     if(ext2 == ''){
     //   console.log('该文件为文件夹')
     ext2 == ''
     }
 
     // 得到整个hwork1_1这个文件的详细参数
     const stats2 = await fs.promises.stat(filehw1_1)
     // 判断是否是一个文件
     const isflie2 = stats2.isFile()
     // 判断文件大小
     const siz2 = stats2.size
     // 文件创建时间
     const createtime2 = stats2.birthtime
     // 文件修改时间
     const updatetime2 = stats2.mtime

     
    // 循环遍历属性数组
    arr.forEach(function(value,index,arr){
       obj1[arr[0]] = name1;
       obj1[arr[1]] = ext1;
       obj1[arr[2]] = isflie;
       obj1[arr[3]] = siz;
       obj1[arr[4]] = createtime;
       obj1[arr[5]] = updatetime;


       // obj2 的
       obj2[arr[0]] = name2;
       obj2[arr[1]] = ext2;
       obj2[arr[2]] = isflie2;
       obj2[arr[3]] = siz2;
       obj2[arr[4]] = createtime2;
       obj2[arr[5]] = updatetime2;
    })
    console.log(obj1)
    console.log(obj2)
}
test()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值