星空网 > 软件开发 > Java

用链表实现nodejs的内存对象管理

虽然javascript拥有垃圾收集,但是垃圾收集机制并不会自动释放持久对象,比如websocks连接。

为了能够在某些特定情况下中止一些连接(比如内存不足),显然要建立全局的对象管理器进行管理。

显而易见,双向链表是最符合管理这类对象的数据结构。

这里实现了增加对象,删除某个对象,以及释放所有对象的方法。

var manager=module.exports=function(){    this.head={"next":null};    this.last=this.head;}manager.prototype.add=function(obj){//添加节点    var prev=this.last;    var newlast={"prev":prev,"next":null,"obj":obj};    prev.next=newlast;    this.last=newlast;    return newlast;//对象移除时使用的句柄}manager.prototype.remove=function(node){//被对象的中止过程调用移除节点    var prev=node.prev;    var next=node.next;    prev.next=next;    if (next!=null) {next.prev=prev;}    node.prev=null;    node.obj=null;    node.next=null;}manager.prototype.free=function(){//全部释放,如果加一个计数器可以实现释放指定数量的节点,您可以试试    var cur;    while((cur=this.head.next)!=null){        cur.obj.end();//执行对象的中止过程    }}//链表实现添加,移除,清空

 




原标题:用链表实现nodejs的内存对象管理

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Barcode Scanner:https://www.ikjzd.com/w/1573153210014015489
BarcodeShipping:https://www.ikjzd.com/w/1573153210647699457
Barnes and Noble:https://www.ikjzd.com/w/1573153213948616705
巴萨国际物流:https://www.ikjzd.com/w/1573153214552252417
BaseLinker:https://www.ikjzd.com/w/1573153215089123329
基本汇率:https://www.ikjzd.com/w/1573153215706030081
独家丨B站广告位可跳转美团APP B站为电商平台引流再升级 :https://www.kjdsnews.com/a/1836410.html
百崖大峡谷生态旅游景区(探秘中国西南自然风光):https://www.vstour.cn/a/363176.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流