2008年9月10日

避免 Memory Exceed 的問題

Google Map API 很方便,可以在極短的時間內,搞出一個看來頗為有趣的網頁內容。但其中有一些技術上的問題,可能在開發之初就得要納入開發計畫當中。

(1) GUnload 的應用

GMap2.GUnload() 函數用以釋放所有GMap2物件宣告使用的資源,以傳統網頁元件而言,因為使用到的 Javascript 物件沒有這麼誇張,所以根本不需要特別考慮釋放資源的問題,直接關閉網頁或瀏覽器即可。但根據這兩天的觀察,GMap2物件的確非常吃系統資源,經常導致IE耗費記憶體過大,作業系統不穩定。

建議還是能夠在 document.body.onunload 指定使用 GUnload() 函式,釋放系統資源,避免上述的問題。

(2) Markers 標記陣列

在地圖上,隨著位置更動事件,動態增列了許多 Markers 來標記地點,這些 Markers 都以一個 Javascript Hash 陣列來儲放。遇到要增列標記時,先檢查是否存在 Hash 陣列裡,然後添加。但如果這個陣列不清理,儘管陣列元素資料不多,仍會導致陣列持續耗費系統資源。

建議當地圖位置更動時,除了動態增列 Markers 標記外,也要動態檢查刪除地圖以外看不到的標記。

沒有留言: