會提出這麼不智又不負責任的想法,是由於不可能整個project都由一人負責,若他人所寫的swf沒有作資源管理,那豈不是一個大漏洞?就算是對資源
管理有概念的人,有時也不能這麼周到的把所有該清的引用、該移除的偵聽、該關的連線... 等等都移除,另外有時可能會用上第三方的組件所建立的
swf,這些swf大多沒有考慮到作為模組被載入,不曉得各位會不會遇到相關問題,有沒有什麼相關的解決方法,或是各位如何避免記憶體被加載卸載的動作
來浪費,或是有什麼需要注意的地方來減少這樣的事情發生,歡迎各位提出意見,非常感謝。
另外一部分,其實也是我目前遇到最大的困擾~~ = = 公司的專案時常會使用第三方組件來製作特效,但大部分的組件都是以獨立執行來設計,很少考
量到被當作模組載入至主要的swf,也因此在釋放資源部分處理的奇差無比,都是僅僅幾次的加載卸載後就會佔用所有的記憶體,而這些組件通常是
compiled,應該也是經過加密,因為我用新版的decompiler出的code無法再順利通過編譯,我想是加密的干擾吧!?anyway, 也
因為decompile得到了部分的code,發現該組件內部有很多private的屬性是new新的movie clip出來,如果我用遞迴來走訪整
個顯示清單,發現是movie clip就null,這樣可以移除物件內部私有屬性的引用嗎?(實驗結果是完全沒有釋放的跡象,倒是如果用遞迴走訪發現
bitmap就把bitmap的bitmap data dispose掉,可以大幅釋放記憶體)。
另外,該組件有許多方法內宣告的函數(function closure??),之前看過Ticore大的文章提過AS3的Function
Closure在GC上有些Bug,記憶體累加的部分是否有可能是因為沒有清除那些Function closure??抱歉我說的很空洞,我會再找時
間作個小demo來跟大家討論。
> > 來浪費,或是有什麼需要注意的地方來減少這樣的事情發生,歡迎各位提出意見,非常感謝。- 隱藏被引用文字 -
>
> - 顯示被引用文字 -