调用Pool.recover后,指定的对象会被收受接收至池内。
应用Handler.create
在开辟过程中,会经常应用Handler来完成异步回调。Handler.create应用了内置对象池治理,是以在应用Handler对象时应应用Handler.create来创建回调剂理器。以下代码应用Handler.create创建加载的回调剂理器:
在膳绫擎的代铝闼楝回调被履行后Handler将会被对象池收回。此时,推敲如下代码会产生什么事:
- Laya.loader.load(urls, Handler.create(this, onAssetLoaded), Handler.create(this, onLoading));
在膳绫擎的代铝闼楝应用Handler.create返回的处理器处理progress事宜。此时的回调履行一次之后就被对象池收受接收,于是progress事宜只触发了一次,此时须要将四个名为once的参数设置为false:
- Laya.loader.load(urls, Handler.create(this, onAssetLoaded), Handler.create(this, onLoading, null, false));
释放内存
JavaScript运行时无法启动垃圾收受接收器。要确保一个对象可以或许被收受接收,请删除对该对象的所有引用。Sprite供给的destory会赞助设置内部引用为null。
第5节:削减CPU应用量
- Laya.loader.load(urls, Handler.create(this, onAssetLoaded));
例如,以下代码确保对象可以或许被作为垃圾收受接收:
- var sp = new Sprite();
- sp.destroy();
当对象设置为null,不会急速将其大年夜内存中删除。只有体系认为内存足够低时,垃圾收受接收器才会运行。内存分派(而不是对象删除)会触发垃圾收受接收。
垃圾收受接收时代可能占用大年夜量CPU并影响机能。经由过程重用对象,测验测验限制应用垃圾收受接收。此外,尽可能将引用设置为null,以便垃圾收受接收器用较少时光来查找对象。有时(比如两个对象互相引用),无法同时设置两个引用为null,垃圾收受接收器将扫描无法被拜访到的对象,并将其清除,这会比引用计数更消费机能。
资本卸载
游戏运行时总会加载很多资本,这些资本在应用完成后应及时卸载,不然一向残留在内存中。
可以经由过程查看Canvas统计信息的第一个值,断定是否一向在刷新Canvas缓存。
对象池,涉及到赓续反复应用对象。在初始化应用法度榜样时代创建必定命量的对象并将其存储在一个池中。对一个对象完成操作后,将该对象放回到池中,在须要新对象时可以对其进行检索。
下例演示加载资本后比较资本卸载前和卸载后的资本状况:
- var assets = [];
- assets.push("res/apes/monkey0.png");
- assets.push("res/apes/monkey1.png");
- assets.push("res/apes/monkey2.png");
- assets.push("res/apes/monkey3.png");
- Laya.loader.load(assets, Handler.create(this, onAssetsLoaded));
- function onAssetsLoaded()
- {
- for(var i = 0, len = assets.length; i < len; ++i)
- {
- var asset = assets[i];
- console.log(Laya.loader.getRes(asset));
推荐阅读
起首什么是注解?@Override就是注解,它的感化是: 检查是否精确的重写了父类中的办法。 标明代码,这是一个重写的办法。1、表如今于:检查子类重写的办法名与参数类型是否精确;检查>>>详细阅读
本文标题:如何将HTML5性能发挥到极致
地址:http://www.17bianji.com/lsqh/37701.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示