看板 Flash 關於我們 聯絡資訊
想請教以下各種情況,對資源的影響: 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)
dsmwang:1.會佔用資源,但是佔多佔少要看Apple有沒有耗資源的方法 09/02 01:00
dsmwang:2.因為那個Apple再也存取不到了,所以會被釋放,只佔一份 09/02 01:00
dsmwang:3.remove了,但是x仍然存在,同1 09/02 01:01
dsmwang:雖然他會幫你刪,但其實可以手動用delete語法刪掉~ 09/02 01:11
justaID:感謝解答! 請問手動刪要用什麼函數? 09/02 02:44
justaID:眼殘了,精華區裡有delete的解說 09/02 15:10