專利名稱:一種基于工業(yè)監(jiān)控系統(tǒng)的ria應(yīng)用的內(nèi)存優(yōu)化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種內(nèi)存優(yōu)化技術(shù),特別涉及一種用于工業(yè)監(jiān)控系統(tǒng)的富互聯(lián)網(wǎng)的內(nèi) 存優(yōu)化的方法。
背景技術(shù):
RIA(Rich Internet Applications)富互聯(lián)網(wǎng)應(yīng)用屬于B/S模式結(jié)構(gòu)的瀏覽器端 程序,特點是開發(fā)維護方便、成本低和對服務(wù)器要求低,在商業(yè)系統(tǒng)中得到廣泛應(yīng)用,缺點 是難以保證長期、穩(wěn)定和可靠的運行,為其應(yīng)用在工業(yè)監(jiān)控系統(tǒng)帶來了很大挑戰(zhàn)。傳統(tǒng)的瀏覽器端程序的流程如下1、通過瀏覽器登錄web服務(wù)器后,初始化并顯示主界面;2、主界面包括菜單和標(biāo)簽頁組件,點擊菜單打開子界面;3、點擊菜單后瀏覽器端程序為子界面動態(tài)分配內(nèi)存,請求子界面所需數(shù)據(jù),初始 化子界面后顯示出來;4、用戶對子界面進行操作或查看信息;5、用戶完成操作后點擊子界面的關(guān)閉按鈕,觸發(fā)子界面關(guān)閉事件,銷毀子界面,釋 放其占用的內(nèi)存。上述過程中,由于JavaScript和DOM的一些特性,往往會造成內(nèi)存泄漏,打開和關(guān) 閉子界面的循環(huán)過程中內(nèi)存泄漏累加,導(dǎo)致其不能長期穩(wěn)定運行,最終瀏覽器崩潰,一般的 解決辦法是人為重啟瀏覽器,但這在工業(yè)監(jiān)控領(lǐng)域是絕對不允許的。
發(fā)明內(nèi)容
本發(fā)明是針對現(xiàn)有技術(shù)存在的不足,提供一種能有效防止瀏覽器端RIA應(yīng)用程序 的內(nèi)存泄漏,以滿足不間斷監(jiān)控、長期穩(wěn)定、可靠運行要求的內(nèi)存優(yōu)化方法。為達到上述目的,本發(fā)明采用的技術(shù)方案是提供一種基于工業(yè)監(jiān)控系統(tǒng)的RIA 應(yīng)用的內(nèi)存優(yōu)化方法,其特征在于包括以下步驟(1)經(jīng)瀏覽器登錄web服務(wù)器,初始化并加載主界面與缺省子界面,一次為主界面 和缺省子界面分配所需內(nèi)存;(2)判斷是否有新的子界面打開請求,若有執(zhí)行步驟(3),若沒有則執(zhí)行步驟(5);(3)判斷子界面是否已經(jīng)顯示,若已經(jīng)顯示,直接跳轉(zhuǎn)到子界面;若沒有顯示,則 判斷內(nèi)存中是否已經(jīng)有該子界面,若內(nèi)存中有該子界面,則為其加載數(shù)據(jù),初始化并顯示; 若內(nèi)存中沒有該子界面,則為其分配內(nèi)存,生成新的子界面后載入數(shù)據(jù),初始化并顯示;(4)用戶對子界面進行內(nèi)部操作,返回步驟(2);(5)判斷是否有關(guān)閉子界面請求,若沒有執(zhí)行步驟(6),若有則觸發(fā)子界面關(guān)閉事 件,隱藏子界面,且不銷毀該子界面,返回步驟(2);(6)判斷是否有關(guān)閉主界面請求,若沒有則返回步驟(2),若有則完成內(nèi)存優(yōu)化。所述的主界面包括菜單和標(biāo)簽頁組件。
本發(fā)明與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案由于優(yōu)化后整個過程的每個子界面僅創(chuàng) 建一次,在創(chuàng)建時分配內(nèi)存后,不再為組件申請和釋放內(nèi)存,因此,其優(yōu)點是不管打開和關(guān) 閉子界面多少次,內(nèi)存占用都不變,這就避免了內(nèi)存的動態(tài)申請和釋放,從而有效的避免了 內(nèi)存泄漏,可以實現(xiàn)RIA在工業(yè)監(jiān)控系統(tǒng)中的長期穩(wěn)定可靠運行。
圖1是本發(fā)明實施例提供的一個基于工業(yè)監(jiān)控系統(tǒng)的RIA應(yīng)用的內(nèi)存優(yōu)化方法的 流程圖。
具體實施例方式下面結(jié)合附圖及實施例對本發(fā)明作進一步描述。實施例一瀏覽器端程序一般為單網(wǎng)頁程序,即在一個網(wǎng)頁上實現(xiàn)整個系統(tǒng)的功能。一個網(wǎng) 頁內(nèi)部通過布局實現(xiàn)狀態(tài)顯示、菜單、主顯示區(qū)和功能按鈕等。這樣可以方便全局管理子界 面,使瀏覽器端程序功能比傳統(tǒng)網(wǎng)頁強大而對服務(wù)器要求更少,服務(wù)器只需為瀏覽器提供 必要的數(shù)據(jù),由RIA應(yīng)用完成頁面生成和展示、數(shù)據(jù)請求等任務(wù)。參見圖1所示,在本實施例提供的一個基于工業(yè)監(jiān)控系統(tǒng)的RIA應(yīng)用的內(nèi)存優(yōu)化 方法的流程圖中可以看出,本發(fā)明的技術(shù)方案首先通過瀏覽器登錄服務(wù)器,在程序開始運 行的時候只為主界面和缺省子界面分配內(nèi)存空間,加載主界面和缺省子界面。程序判斷是否有新的子界面打開請求,如果有則根據(jù)子界面標(biāo)識在內(nèi)存中已顯示 區(qū)查找子界面,如果找到了就跳轉(zhuǎn)到這個子界面;如果沒有找到繼續(xù)在內(nèi)存中未顯示區(qū)查找子界面,如果找到了就把子界面的顯示 狀態(tài)改為“顯示”,加載數(shù)據(jù)并顯示出來;如果還是沒有在內(nèi)存中查找到就分配內(nèi)存,新建子界面,設(shè)置顯示狀態(tài)為“顯示”, 放入已顯示區(qū),加載數(shù)據(jù)并顯示出來;當(dāng)程序判斷有子界面的關(guān)閉請求時,把子界面的顯示狀態(tài)標(biāo)記改為“隱藏”,放入 未顯示區(qū),并且不再顯示,子界面并不銷毀,內(nèi)存也不釋放。本發(fā)明所提供的優(yōu)化方案,其子界面一經(jīng)創(chuàng)建就一直保存在內(nèi)存里,只是狀態(tài)和 數(shù)據(jù)發(fā)生變化,沒有重新的創(chuàng)建和銷毀也就沒有內(nèi)存的反復(fù)申請和釋放。由于沒有內(nèi)存的 反復(fù)申請和釋放,經(jīng)過長時間的操作和運行,內(nèi)存占用不會明顯增加,從而保證工業(yè)監(jiān)控系 統(tǒng)的長期穩(wěn)定可靠運行。由于工業(yè)監(jiān)控系統(tǒng)的組件不會太多,而所能應(yīng)用的內(nèi)存都很大,遠 多于所需內(nèi)存,因此,能一次為所有子界面分配內(nèi)存。工業(yè)監(jiān)控系統(tǒng)對實時性要求很高,本方法需要一個子界面時只是把它從內(nèi)存顯示 出來,速度大大提高,符合工業(yè)監(jiān)控系統(tǒng)的要求。本發(fā)明對這種工業(yè)監(jiān)控系統(tǒng)的瀏覽器端程序用組件隱藏代替銷毀技術(shù),避免組件 的多次關(guān)閉和打開時內(nèi)存的多次釋放和分配,從而有效避免了內(nèi)存泄露,使RIA應(yīng)用更加
穩(wěn)定可靠。
權(quán)利要求
一種基于工業(yè)監(jiān)控系統(tǒng)的RIA應(yīng)用的內(nèi)存優(yōu)化方法,其特征在于包括以下步驟(1)經(jīng)瀏覽器登錄web服務(wù)器,初始化并加載主界面和缺省子界面,為主界面和缺省子界面分配所需內(nèi)存;(2)判斷是否有新的子界面打開請求,若有執(zhí)行步驟(3),若沒有則執(zhí)行步驟(5);(3)判斷子界面是否已經(jīng)顯示,若已經(jīng)顯示,直接跳轉(zhuǎn)到子界面;若沒有顯示,則判斷內(nèi)存中是否已經(jīng)有該子界面,若內(nèi)存中有該子界面,則為其加載數(shù)據(jù),初始化并顯示;若內(nèi)存中沒有該子界面,則為其分配內(nèi)存,生成新的子界面后載入數(shù)據(jù),初始化并顯示;(4)對子界面進行內(nèi)部操作,返回步驟(2);(5)判斷是否有關(guān)閉子界面請求,若沒有執(zhí)行步驟(6),若有則觸發(fā)子界面關(guān)閉事件,隱藏子界面,且不銷毀該子界面,返回步驟(2);(6)判斷是否有關(guān)閉主界面請求,若沒有則返回步驟(2),若有則完成內(nèi)存優(yōu)化。
2.根據(jù)權(quán)利要求1所述的一種基于工業(yè)監(jiān)控系統(tǒng)的RIA應(yīng)用的內(nèi)存優(yōu)化方法,其特征 在于所述的主界面包括菜單和標(biāo)簽頁組件。
全文摘要
本發(fā)明公開了一種基于工業(yè)監(jiān)控系統(tǒng)的RIA應(yīng)用的內(nèi)存優(yōu)化方法,其步驟包括(1)經(jīng)瀏覽器登錄web服務(wù)器,初始化并顯示主界面與缺省子界面;(2)程序判斷是否有新的子界面打開請求,若有則程序判斷子界面是否已經(jīng)顯示,若已經(jīng)顯示就直接跳轉(zhuǎn)到子界面;若沒有顯示則判斷內(nèi)存中是否有該子界面,若有就為其加載數(shù)據(jù),初始化并顯示出來;若沒有則分配內(nèi)存,生成新的子界面,載入數(shù)據(jù),初始化并顯示出來。當(dāng)關(guān)閉子界面時,子界面隱藏起來,并不銷毀,內(nèi)存也不釋放。本發(fā)明用組件隱藏代替銷毀技術(shù),避免組件的多次關(guān)閉和打開時內(nèi)存的多次釋放和分配,從而有效避免了內(nèi)存泄露,實現(xiàn)RIA在工業(yè)監(jiān)控系統(tǒng)中的長期穩(wěn)定可靠運行。
文檔編號G06F9/445GK101944036SQ201010293558
公開日2011年1月12日 申請日期2010年9月27日 優(yōu)先權(quán)日2010年9月27日
發(fā)明者姜明武, 魏德剛, 魏德科 申請人:蘇州光格設(shè)備有限公司