flash怎么强制gc_Flash高性能开发-内存篇

文档从互联网中收集,已重新修正排版,

word

格式支持编辑,如有帮助欢迎下载支持。

1

如有帮助欢迎下载支持

内存优化在项目是一个重要的环节,如果不合理的利用和回收内存会合你的程序整体大大下降

.

合理使用对象

创建不同对象一般所消耗的内存是不一样的。

:Number

消耗

8

个字节

,int

消耗

4

个字节

,

uint

消耗

4

个字节

.

下面我举一些例子

:

1.    int

类可使用表示为

32

位带符号整数的数据类

型。

int

类表示的值的范围是:

-2,147,483,648

(-2^31)

2,147,483,647

(2^31-1)

,所以如果你的取值范围在

-2,147,483,648

(-2^31)

2,147,483,647 (2^31-1)

请你用

int

而不是用

Number(

刚从

2.0

转过来的人可能喜欢

Number).uint

范围是

0

4,294,967,295 (2^32-1)

之间

,Actionscript3

中类型很少,所以

这些只要你平时稍加注意一下就行

.

2.

合理使用

Shape

Sprite,MovieClip,

你可能用

MovieClip

可以完成

Sprite

Shape

的功

能,但是他们所需的内存是不一

样的

Shape

需要

236

字节

,Sprite

需要

412

字节

, MovieClip

需要

440

字节

,

如果你只想显示图形没有交互那你使用

Shape,

如果是有交互的图形你可以用

Sprite,

如果是动画你才用

MovieClip.

以上只是

2

个常见的实例,

其实在

as3

中还有很多值得注意的这类情况。

我还看到有些大哥为了派

发一个事件而去继承

Sprite

,Sprite

需要消耗

400

字节

, EventDispatcher

只需要

40

字节

.

对象重用

简单的说就是重复使用对象,而不是释放再重新申请

,

你可能这么认为:释放一个对象回收

100

字节的空间,

我重新在

new

一个又占用

100

字节,

返正都得占用

100

字。

flashplayer

是说你想释放就能释放的

,

垃圾回收是由

flashplayer

来执行的,程序是不能控制,更不知道他是

什么时候来执行的

.

所以对于我们来说完全不可控

.

所以说你觉得可回收了对象,很可能没回收

继续占用空间直到

flashplayer

觉得内存不够时才可能执行垃圾回收从而被释放

.

而执行垃圾回收

是非常

耗费资源的操作尤其在大型的项目中

.

虽然我们不能控制垃圾回收,

但是我们可以降低垃圾回收器执行的次数,

这就是我们尽量做到不去

new,

而使用现有的对象。这些做还有个好处就是,节省了创建对象的性能开销

.

这里是不断的创建对象

1.

var size:Rectangle;

2.

var bitmap:BitmapData=new BitmapData(100,100);

3.

for (var:int = 0; i 

4.

{

5.

size = new Rectangle(i,0,1,10);

6.

myBitmapData.fillRect(size,COLOR);

7.

}

重用对象

1.

var bitmap:BitmapData=new BitmapData(100,100);

2.

var size:Rectangle = new Rectangle(0,0,1,10);

3.

for (var:int = 0; i 

4.

{

5.

size.x = i;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值