ActionScript 3.0 中 getSize() 方法显示对象在内存中占用的字节数。
所有原始类型(String 除外)在内存中都是占用 4 – 8 个字节:
var a:Number;
trace(getSize(a));// 输出: 8
var b:int;
trace(getSize(b));// 输出: 4
var c:uint;
trace(getSize(c));// 输出: 4
var d:Boolean;
trace(getSize(d));// 输出: 4
var e:String;
trace(getSize(e));// 输出: 4
String 类型分配的存储量基于 String 的长度
var str:String;
trace(getSize(str));// 输出: 4
str = "";
trace(getSize(str));// 输出: 24
str = "文字内容";
trace(getSize(str));// 输出: 32
然后想起自己的一个代码书写习惯
var str:String="";
str += "<font color='#ffffff'>";
str += "文字内容";
str += "</font>";
为避免String类型的变量在没有赋值的情况下就被调用时发生“无法访问空对象引用的属性或方法“,所以我习惯在声明String类型的变量时习惯写成 var str:String = “”;
来看一下内存分配情况:
var str:String = "";
trace( getSize(str) );// 输出: 24
str += "<font color='#ffffff'>";
trace( getSize(str) );// 输出: 24
str += "文字内容";
trace( getSize(str) );// 输出: 88
str += "</font>";
trace( getSize(str) );// 输出: 168
实际上还有下面这两种写法
var str:String = "<font color='#ffffff'>文字内容</font>";
trace(getSize(str) );// 输出: 96
var str:String = "<font color='#ffffff'>" +
"文字内容" +
"</font>";
trace(getSize(str) );// 输出: 96
很显然第后面两段代码执行起来更省资源,所以字符串内容尽量写成一行,字符串内容较多时每行的代码用+号结尾,声明变量时尽量不赋值。