上一篇 | 下一篇

内存中对象的配置

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

  翻译:jerrowolf奥古多媒体G KA0F.r-Y
奥古多媒体},A-M!Rci'r
  本文摘自Dreamlight Director Talisman。那里包含很多内存管理,声音,演员表,面向对象的lingo(lingOOP,自己理解的^_^)的信息。还有behavior和其他的信息。
l| L)qvf.DY
({Q4T4x%d/T&Vfo}Rc   如何来释放那些被大对象所占用的内存呢?最简单的方法是:切断所有与对象的联系,它就被清除了。切断联系的意思是将所有指向该对象的变量重置为void(包括在演员表中的任何联系),通过如下语句可以实现它:set gMyGroovyObject = value(void) ,或者你也可以用set gMyGroovyObject = 0来实现。两种方法都不需要额外的代码或者外部句柄,Director允许通过给对象的指针赋予0值,来将其从内存中清除掉。这两种方法都有效。而用void的好处就是,这样看上去更像是将其从内存中清楚,而不是给它赋一个0值。
/efBMCw
M I]Q%dDk   这两种方法都可以释放内存中的对象,也都能保留未被使用的变量。这个变量是0还是void都没差别,他们都会占用最少的内存来存储一个值。奥古多媒体:Wc9lP$jT@

0f-[7moZ6} QW3F   lingo中变量占用内存的大小取决于这个变量存储内容的需要。从占用内存的角度来讲,变量被分为两种:简单变量和复杂变量,简单变量存储整数,符号,和指针。他们的大小是固定的,都是8字节。而复杂变量则用一个指针来指向内存中的另外一部分内容,那里存放着实际的内容。这样的复杂变量存储字符串,表,还有对象。当切断与”内存中的另外一部分内容“相关联的所有指针和联系,这部分被占用的内存就会被释放。例如,如果我们定义一个叫myobjectptr的变量来存储一个新的对象,他就存储了一个指向新对象的指针:myobjectptr占用的空间=指针本身占用的8字节+新对象所占用的内存空间。
goi|!kv?q{} E
y {$k{T4Id j   如果myobjectptr只是一个指向这个特定对象的一个指针,我们可以简单地用set myobjictptr=0 或者 VOIDl来释放这个对象所占用的内存空间,但是myobjectptr却还占用着一个简单变量所应该占用的空间。但是其余部分已经被释放了,在这个变量离开作用域而被彻底销毁时,它才真正地全部释放它所占用的内存。
R%r/_reI s)T \ 奥古多媒体+Q,w4U'N9|7yXU ]
  不同的lingo变量作用域有:奥古多媒体'Y ~2?%M K6w^ R

e6A"YC C/D"w1[   1、本地作用域:一个句柄中创建的变量拥有本地作用域。当句柄结束时,它也就被销毁了,它的本地作用域就结束了。如果myobjectptr是一个本地作用域的变量,那么当它所在句柄未结束之前,它始终占用一个最小的内存空间。
^G\Xz|"X
k'L(A&y#V4X   2、对象作用域:这是一种属性变量,他存在于一个对象中,或者对象中被其他关联变量所指向的表当中。属性变量将一直存在,直到包含它的那个对象再没有任何变量与之关联。如果 myobjectptr是一个对象中的属性变量,并且myobjectptr已经被清空,那么,他将一直占用一个最小的内存空间,直到包含他的那个对象销毁,也就是与对象相关联的其他变量全部切断。奥古多媒体UlHbQ2Ab
奥古多媒体!E4e'T0a-S
  3、全局作用域:很明显,全局变量拥有全局作用域。他们将在电影或者projector退出之前一直存在。你可以使用clearglobals命令来清空所有全局变量,但这只能使全局变量的指向为空,除非他根本就没指向什么。尽管已经被清空,但是他还是将占用简单变量所需要占用的内存空间。如果myobjectptr是一个全局变量,并且被清空了。那么他将始终占用一部分空间,直到电影或者projector退出。
?f/lU.V,r!k j/e 奥古多媒体2f f'r:l+e
  总之,简单变量类型占用的内存最少。在没有脱离他们的作用域之前,你无法真正的清楚他们。而复杂变量也占用同样的内存空间,不过,他还要占用额外的空间来容纳复杂数据自己。对于那些复杂变量或者没有任何其他变量指向的复杂数据本身,你可以通过简单地将复杂变量清0或者使之为空,来释放那些额外占用的内存。

字号: | 推荐给好友

 

评分:0

我来说两句

seccode


最新歌曲
转机 放生 黄玫瑰 摇啊摇 那滋味 擦肩而过 你若成风 幸福一辈子 依然在一起 吻得太逼真 感动天感动地 坐上火车去拉萨 怎么会狠心伤害我
心碎 冲动 小太阳 别碰我 蒲公英 爱情小偷 只要不亏 一定要爱你 等爱的玫瑰 无情的温柔 北极星的眼泪 最后一次的温柔 亲爱的那不是爱情
光荣 火花 下雨天 我可以 樱花草 为你写诗 独家记忆 再见小时候 寂寞才说爱 忘不掉的伤 爱上你是个错 第三者的第三者 孤独的时候可以抱你
假如 城府 是非题 有缘人 舍不得 我的答铃 只欠秋天 外滩十八号 越爱越难过 123木头人 爱走了心碎了 爱上你是我的错 爱情里没有谁对谁错