2009-10-01 21 views
2

我幾個月來一直致力於Adobe Flex應用程序的開發,並且該應用程序旨在連續數天(數週!)24/7運行。但是,我現在看到,在不間斷運行幾天後,運行的計算機告訴我係統虛擬內存不足,並且給我一個關於頁面文件使用情況的錯誤。關閉Flex應用程序後,頁面文件使用率從1.9 GB下降到100 MB(或更低)。似乎它使用了所有這些內存並且沒有釋放它,儘管我在應用程序中一直非常小心,不保留巨大的數組。Adob​​e Flex應用程序頁面文件的使用率通過屋頂!

該應用程序做了一些繪圖並繪製了很多形狀(以便繪製一個'量表'),然後通過重新聲明該對象爲另一個'量表'來擺脫它們。

任何想法爲什麼我的頁面文件使用率攀升如此之高?

回答

2

您最有可能擁有未被移除的eventListeners。它們保留對象的引用並防止它們被垃圾收集。

2

您可以使用Flex Builder專業版中的分析器查看您的內存使用情況。就像另一張海報中提到的,事件聽衆很多時候都是這種情況下的罪魁禍首,但更普遍的是,僅僅因爲你認爲你正在擺脫(摧毀或刪除)一個變量,並不意味着它真的得到了照顧由垃圾收集器。如果任何引用(如事件監聽器)仍然存在於該變量(或對象)中,它將不會被收集。分析器將指出這些事情。

0

我聽說有傳言說,在舞臺上放置任何東西都會造成內存泄漏。換句話說,你可以儘可能的小心你的代碼,但是你仍然會泄漏內存。就我所知,這還沒有得到Adobe的驗證。一個好的測試可能是實例化Shape,Sprite和MovieClip,將它們添加到顯示列表中,然後讓應用程序在一夜之間運行。如果你最終會對此結果進行測試,我們很樂意聽到結果。