您現在的位置: 18luck新利全站下载 >> 行業分類>> IT行業>> 資料信息

Flex應用內存泄露的分析及其診斷(pdf 9頁)

所屬分類:
IT行業
文件大小:
886 KB
下載地址:
相關資料:
內存, 診斷
Flex應用內存泄露的分析及其診斷(pdf 9頁)內容簡介
Flex應用內存泄露的分析及其診斷內容提要:
FlashPlayer虛擬機的垃圾回收機製:
垃圾收集器采用計數法或標記法來查找需要清除的對象。計數法由於無法檢測循環引用的對象,現在已經很少采用了。重點談一下標記法。Flex 應用的
對象在內存中被映射成樹形結構。這很好理解,每個 Flex 應用總有一個 Application 的入口被稱為根節點(Root),垃圾收集器從根節點開始遍曆每個對
象,對可達對象標記為“有效”(有一種例外就是弱引用,後麵的章節詳談)。而在這棵樹之外的孤島對象或者由於循環引用形成的孤島對象集合被標記
為“無效”,垃圾收集器會在合適的時間銷毀這些無效對象,完成一次垃圾收集。而垃圾收集器是運行在虛擬機中的一個低優先級的守護進程,為了不影
響性能,它隻在必要的時候才運行。例如在向操作係統申請新內存空間的時候,發生異常的時候等等,因此內存並不是實時回收的。
Flex 內存泄露的原因:
有了垃圾收集器,為什麼 Flex 還會產生內存泄露呢?從垃圾收集器的角度看,對象分為“有效”和“無效”兩類;而從 Flex 應用程序的角度看,對象又被分
為“有用”和“無用”兩類。
舉個例子,當程序出現邏輯錯誤需要提示用戶時,Flex 程序構造一個提示框,這時,提示框是一個“有用”的對象,當用戶點擊關閉按鈕關掉提示框後,
提示框就變成“無用”的對象了,應用程序再也不會用到它(下次出現相同邏輯錯誤時,程序又會構造一個全新的提示框)。應用程序認為這個提示框應
該被回收掉,但是因為某種原因,存在一個從“有效”對象到這個提示框的引用,垃圾收集器顯然認為提示框也是“有效”的。這個“有效”“無用”的提示框便造
成了 Flex 的內存泄露。
..............................

Baidu
map