[討論] 物件佔用資源的問題
想請教以下各種情況,對資源的影響:
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上,但依然佔著資源?)
--------------------------------------------------------------------
用 / 爬"資源",找到一篇文章討論到資源
在推文裡有神人(人稱的CJ神?!)
解釋Flash管理記憶體的方式(garbage collector)
原理大概可以體會,但實際上怎麼運作還是一頭霧水
所以用上面3種很具體的情況來發問
謝謝~
(下面附上神人的解說)
推 cjcat2266:Flash管理記憶體的方式是garbage collector 11/08 00:08
→ cjcat2266:Google一下可以查到GC的運作機制 11/08 00:08
→ cjcat2266:簡單來說,當有一個物件你不需要使用的時候 11/08 00:08
→ cjcat2266:可以讓裝載它reference的變數值為null 11/08 00:08
→ cjcat2266:當一個物件不再被任何一個變數裝載refernce的時候 11/08 00:09
→ cjcat2266:GC就會在需要記憶體的時候去把該物件從記憶體上消除掉 11/08 00:09
→ cjcat2266:因為它再也沒有辦法被存取到,所以它佔用著記憶體 11/08 00:10
→ cjcat2266:至於你說的function裡面宣告變數,這叫local variable 11/08 00:10
→ cjcat2266:一離開function之後該變數就不見了 11/08 00:11
→ cjcat2266:如果該變數是某個物件唯一的reference 11/08 00:11
→ cjcat2266:那該物件也會在適當時機被GC處理掉
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.44.9.235
※ 編輯: justaID 來自: 114.44.9.235 (09/02 00:42)
推
09/02 01:00, , 1F
09/02 01:00, 1F
→
09/02 01:00, , 2F
09/02 01:00, 2F
→
09/02 01:01, , 3F
09/02 01:01, 3F
→
09/02 01:11, , 4F
09/02 01:11, 4F
→
09/02 02:44, , 5F
09/02 02:44, 5F
→
09/02 15:10, , 6F
09/02 15:10, 6F
討論串 (同標題文章)