IE 記憶體洩漏 引起 Flash Movie 無法關閉的問題 @ Ticore's Blog :: 隨意窩 Xuite日誌
  • Site Search
  • Google
    Web Ticore's Blog
  • 最新文章
  • Recent Comments
  • 2006-12-22 00:11 IE 記憶體洩漏 引起 Flash Movie 無法關閉的問題
    平均分數:0 顆星    投票人數:0
    我要評分:

    IE 記憶體洩漏 引起 Flash Movie 無法關閉的問題

    最近工作上又遇到奇怪的問題
    據說客戶的電腦用 Internet Explorer 瀏覽器
    撥放含有 Flash Media Server (FMS) 即時連線的 Flash 內容
    該 IE 視窗關閉之後
    連線無法終止
    一直在背景與 FMS 連線
    直到客戶把全部的 IE 視窗關閉才中斷

    網頁中的 Flash Movie 是使用 SWFObject 來載入的
    SWFObject 也更新到 1.4.4 版

    在我自己的電腦上用了 Firefox 2.0 與 IE 6 一直都測不出來
    只好像無頭蒼蠅一樣搜尋 Google 谷歌大神

    的確也有人發生類似的的情況
    像是 IE 視窗關閉之後
    Flash 的音樂還繼續在背景撥放等等

    不過卻找不到實際有問題的頁面以及有效的解決方式

    隔了幾天之後,跟上次一樣索性把矛頭指向 IE Memory Leak Bug
    果然又有斬獲!!

    大致上好像是因為 IE 瀏覽器內記憶體回收 (GC) 的演算方式有瑕疵
    遇到 Dom Object 與 JavaScript Object 反覆循環參照 (circular reference) 的情況無法有效回收記憶體

    我也實際按照此原理測試
    以下是用來建立 Flash Dom Object 與 JavaScript Object 反覆循環參照的程式碼:

    Flash 內的 AS 只有單純的與 FMS 連線而已
    (假如沒有安裝 FMS,改成撥放 Mp3 也可以)

    假如在 window.onbeforeunload 事件內
    沒有清除循環參照的話
    一直重新整理網頁
    Flash Movie 便會一直建立連線無法關閉
    從 FMS Admin Console 就會看到連線數不斷增加

     

    IE 記憶體洩漏 (memory leak) 相關參考資料:

    [Mishoo] IE where's my memory

    QuirksBlog - Javascript memory leaks

    Schlueterica - Memory Leaks in Microsoft Internet Explorer

    Novemberborn - Event Cache

    talideon.com - Fixing JavaScript memory leaks for good

    youngpup.net - DHTML leaks ... not so much, actually


    其它相關參考資料:

    重複引用 SWFObject JavaScript 衝突

     

    Ticore / Xuite日誌 / 回應(0) / 引用(0) / 好文轉寄
    回應