美文网首页
如果你问我js对象池

如果你问我js对象池

作者: 冇得感情 | 来源:发表于2020-01-11 22:42 被阅读0次

    基本理念:  创建时屏蔽获取细节,对象在当前生命周期终结时入池。

    优点: 

    1.动态修改对象属性比创建对象的开销小(体现在内存上)

    2.复用池中对象,消除创建对象、回收对象 所产生的内存开销、cpu开销以及(若跨网络)产生的网络开销.

    缺点

    1.由于池中对象的数量有限, 势必成为一个可伸缩性瓶颈;

    2.很难正确的设定对象池的大小, 如果太小则起不到作用, 如果过大, 则占用内存资源高,

    常见的使用对象池有:在使用socket时(包括各种连接池)、线程等等

    1)创建时:

    var objA = Pool.getItemByCreateFun("SYMBOL_A", createFun); //直接创建或从池中获取

    其中,Pool内部维护了一个字典,getItem时即是在字典中查找对象,若对象不存在,就在createFun进行创建;

    注意,此时新创建的对象并不会直接入池!!而是直接返还给调用者

    2)销毁时:

    Pool.recover("SYMBOL_A", objA);//入池

    objA.removeSelf;//从父节点移除

    objA = null;//业务代码(若宿主对象也要重复利用的话)

    当对象在当前环境生命周期结束时,对象池对其进行回收;

    相关文章

      网友评论

          本文标题:如果你问我js对象池

          本文链接:https://www.haomeiwen.com/subject/umnbactx.html