卸下的Flex的DisplayObject我有一個Flex應用程序,一個是我沒建的問題,所以我可以提供我所有的調查結果,但遺憾的任何缺乏透明度。從視圖和存儲池
有一個包含7個主視圖的Flex應用程序。在視圖之間導航時存在內存問題。
所有這些觀點是在一個ViewStack,但由於一些涉及3D對象我認爲這是太多擁有這一切顯示列表。我現在要清理堆棧中的所有孩子,並在需要時添加/刪除它們。這增加了一小部分性能,但仍然無法使用。奇怪的是,用這個和原來的方法,CPU隨着使用而攀升,但最終會在某個地方出現。現在,我正在創建每個屏幕的新實例,並將前一個變量設置爲null。現在看起來CPU在創建視圖時會突然激活,但是平滑到比原來低得多的程度。這感覺就像是進步,但現在可用內存不斷攀升的地方,它不是以前...
我的理解是調用刪除子或刪除所有的孩子將垃圾收集器下一次運行時標記對象刪除。我看不到任何其他對該實例的引用。我的代碼是沿
this.parentApplication.viewstack.removeAllChildren線();
this.parentApplication.viewstack.addChild(new HomeScreen);
我必須爲每個按鈕添加一個新的實例,如上述的功能。
我可以看到和感受到傻要求,但需要確認的唯一的事情,是每個視圖擴展名爲「屏幕」類,這個類包含一個單參考了一些核心部件
this.model = PancakeApplication.instance 。模型; this.meaModel = MeaApplication.instance.meaModel; this.meaModel.addEventListener(ScreenChangeEvent.SCREEN_CHANGE,chosenScreenChangeHandler);
會這一招仍需要垃圾收集,以爲它? 清除內存池中的對象的一般建議會很棒!我從未需要深入分析Flash Player。
解決:我認爲這是一個錯誤的聲音驅動程序,消除所有的聲音和shes像小貓嗚嗚聲。我的機器在Windows XP上運行良好,但不能在觸摸板上使用Windows 7崩潰(不確定驅動程序是否正在查看它們)。
更新:現在,我想它不是司機,嘗試3個不同的版本,都沒有改善。我確實發現聲音在TweenLite庫中漸漸消失。 TweenLite看起來不像有任何內存泄漏,因爲它可以在其他機器上正常工作。只是使用volumeEasingFunction似乎消耗了越來越多的CPU,直到它嚇壞了。這是蹩腳的硬件運行Windows 7,這並沒有幫助。
+1對於弱引用評論。將從現在開始在我的事件監聽器中使用它 – Ryan
感謝回覆jss鏈接是有幫助的。 – Lex