Re: [討論] 物件佔用資源的問題
※ 引述《justaID (快樂崇拜)》之銘言:
: 想請教以下各種情況,對資源的影響:
: 1. 宣告某變數並new實體,但沒有addChild進舞台
: 那該物件是否佔用資源?
: EX: var x=new Apple(); (此時x是否已經佔用資源?)
: 2. 一個變數new 2次,資源也佔2份嗎?
: EX: var x=new Apple();
: x=new Banana(); (這樣會Apple和Banana各佔一份資源,還是Apple會釋放?)
: 2. remove之後,是否該物件的記憶體資源就能被釋放?
: EX: var x=new Apple();
: this.addChild(x);
: this.removeChild(x); (此時x佔用的資源是否被釋放了?
: 還是不存在stage上,但依然佔著資源?)
AS3有個東西叫做display list
只有被加到display list裡的東西,才有機會在畫面上被看到
怎麼讓東西加到display list? addChild(當然addChildAt也是)
反之,透過removeChild就是把東西移出display list
要注意的是移出display list跟visible = false是不一樣的事情
一個是根本不在場景上,一個是在場景上只是看不到而已
1. 是
即使不在display list也一樣,new的動作就是跟電腦要一塊記憶體來用
所以看不到也還是佔記憶體
2. 是,也不是
變數x一開始指向一個new Apple,過沒多久換指向new Banana
因為new Apple不再被x所指向,系統就會認為它沒人要,是"準備"要丟掉的東西了
至於什麼時候丟掉? 這就由GC機制決定了..也許很快,也許一下子
在GC還沒把垃圾收走的那個當下,它的確是佔兩份資源
收走了,就是只佔一份了
3. 否
同1,不在display list只是代表它不會被render出來讓你看到
但它還是存在記憶體裡的
--
http://blog.eddie.com.tw/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.139.9
推
09/02 01:47, , 1F
09/02 01:47, 1F
→
09/02 01:48, , 2F
09/02 01:48, 2F
→
09/02 01:50, , 3F
09/02 01:50, 3F
→
09/02 01:51, , 4F
09/02 01:51, 4F
推
09/02 02:08, , 5F
09/02 02:08, 5F
→
09/02 02:47, , 6F
09/02 02:47, 6F
→
09/02 02:48, , 7F
09/02 02:48, 7F
→
09/02 02:49, , 8F
09/02 02:49, 8F
→
09/02 02:49, , 9F
09/02 02:49, 9F
討論串 (同標題文章)