三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 251|回复: 0
打印 上一主题 下一主题

类: SlowBuffer

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-8-7 08:55:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
返回一个不被池管理的 Buffer。
大量独立分配的 Buffer 容易带来垃圾,为了避免这个情况,小于 4KB 的空间都是切割自一个较大的独立对象。这种策略既提高了性能也改善了内存使用率。V8 不需要跟踪和清理过多的 Persistent 对象。
当开发者需要将池中一小块数据保留一段时间,比较好的办法是用 SlowBuffer 创建一个不被池管理的 Buffer 实例,并将相应数据拷贝出来。
  1. // need to keep around a few small chunks of memory
  2. var store = [];

  3. socket。on('readable', function() {
  4.   var data = socket。read();
  5.   // allocate for retained data
  6.   var sb = new SlowBuffer(10);
  7.   // copy the data into the new allocation
  8.   data。copy(sb, 0, 0, 10);
  9.   store。push(sb);
  10. });
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-6-27 00:39 , Processed in 0.028104 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表