上一篇 | 下一篇

内存中对象的配置

发布: 2007-1-25 17:12 | 作者: dreamlight.com | 来源: 译自dreamlight.com | 查看: 210次

  翻译:jerrowolf
/Z(K k8M3bB
p2pwxtg   本文摘自Dreamlight Director Talisman。那里包含很多内存管理,声音,演员表,面向对象的lingo(lingOOP,自己理解的^_^)的信息。还有behavior和其他的信息。奥古多媒体%E%k(C$S;d'mLG
奥古多媒体&S9PR-ls.}:LY ] b
  如何来释放那些被大对象所占用的内存呢?最简单的方法是:切断所有与对象的联系,它就被清除了。切断联系的意思是将所有指向该对象的变量重置为void(包括在演员表中的任何联系),通过如下语句可以实现它:set gMyGroovyObject = value(void) ,或者你也可以用set gMyGroovyObject = 0来实现。两种方法都不需要额外的代码或者外部句柄,Director允许通过给对象的指针赋予0值,来将其从内存中清除掉。这两种方法都有效。而用void的好处就是,这样看上去更像是将其从内存中清楚,而不是给它赋一个0值。奥古多媒体@ evk)lQ
奥古多媒体qI T!W\/|u"~~Y
  这两种方法都可以释放内存中的对象,也都能保留未被使用的变量。这个变量是0还是void都没差别,他们都会占用最少的内存来存储一个值。奥古多媒体y"_4]#hn^

0A;r`5Y`2EL'S@   lingo中变量占用内存的大小取决于这个变量存储内容的需要。从占用内存的角度来讲,变量被分为两种:简单变量和复杂变量,简单变量存储整数,符号,和指针。他们的大小是固定的,都是8字节。而复杂变量则用一个指针来指向内存中的另外一部分内容,那里存放着实际的内容。这样的复杂变量存储字符串,表,还有对象。当切断与”内存中的另外一部分内容“相关联的所有指针和联系,这部分被占用的内存就会被释放。例如,如果我们定义一个叫myobjectptr的变量来存储一个新的对象,他就存储了一个指向新对象的指针:myobjectptr占用的空间=指针本身占用的8字节+新对象所占用的内存空间。奥古多媒体)zOF?x

f*zdz V   如果myobjectptr只是一个指向这个特定对象的一个指针,我们可以简单地用set myobjictptr=0 或者 VOIDl来释放这个对象所占用的内存空间,但是myobjectptr却还占用着一个简单变量所应该占用的空间。但是其余部分已经被释放了,在这个变量离开作用域而被彻底销毁时,它才真正地全部释放它所占用的内存。奥古多媒体Lzt&~trmS3s^
奥古多媒体 N$a/kf&s
  不同的lingo变量作用域有:奥古多媒体Z7~4VXcb!^;V

2]{8D;Q u}9jxvo   1、本地作用域:一个句柄中创建的变量拥有本地作用域。当句柄结束时,它也就被销毁了,它的本地作用域就结束了。如果myobjectptr是一个本地作用域的变量,那么当它所在句柄未结束之前,它始终占用一个最小的内存空间。奥古多媒体2}D9oz/v
奥古多媒体 SL p E~ QO;r G
  2、对象作用域:这是一种属性变量,他存在于一个对象中,或者对象中被其他关联变量所指向的表当中。属性变量将一直存在,直到包含它的那个对象再没有任何变量与之关联。如果 myobjectptr是一个对象中的属性变量,并且myobjectptr已经被清空,那么,他将一直占用一个最小的内存空间,直到包含他的那个对象销毁,也就是与对象相关联的其他变量全部切断。
N$^9o?(Nj!w+u W
9l q@6z([   3、全局作用域:很明显,全局变量拥有全局作用域。他们将在电影或者projector退出之前一直存在。你可以使用clearglobals命令来清空所有全局变量,但这只能使全局变量的指向为空,除非他根本就没指向什么。尽管已经被清空,但是他还是将占用简单变量所需要占用的内存空间。如果myobjectptr是一个全局变量,并且被清空了。那么他将始终占用一部分空间,直到电影或者projector退出。
&l5i1R.T%e 奥古多媒体AJv [Y#tuc
  总之,简单变量类型占用的内存最少。在没有脱离他们的作用域之前,你无法真正的清楚他们。而复杂变量也占用同样的内存空间,不过,他还要占用额外的空间来容纳复杂数据自己。对于那些复杂变量或者没有任何其他变量指向的复杂数据本身,你可以通过简单地将复杂变量清0或者使之为空,来释放那些额外占用的内存。

字号: | 推荐给好友

 

评分:0

我来说两句

seccode


音乐
落叶 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 如果爱能早些说出来
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 为你而活 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 火花 下雨天 小酒窝 樱花草 为你写诗 无可取代 无情的温柔 寂寞才说爱 忘不掉的伤 爱上你是个错 陪你一起看草原 地球人都知道我爱你
城府 假如 花海 兰亭序 爱太痛 舍不得 你若成风 女人如烟 外滩十八号 我们的纪念 摇滚怎么了 和寂寞说分手 爱上你是我的错 爱情里没有谁对谁错