專利名稱:一種實現(xiàn)程序資源共享的系統(tǒng)及方法
技術領域:
本發(fā)明屬于計算機應用技術領域,尤其涉及一種實現(xiàn)程序資源共享的系統(tǒng)及方法。
背景技術:
當前,視窗(WINDOWS)操作系統(tǒng)已經(jīng)得到廣泛應用,人們可以利用該操作系統(tǒng)所提供的圖形操作界面實現(xiàn)各式各樣的功能。由于圖形操作具有方便、快捷、直觀等優(yōu)點,因此,各種軟件應用程序也分別朝著提供圖形化操作的方向發(fā)展,以方便用戶的操作,提高軟件的服務質(zhì)量。
在現(xiàn)有技術中,應用程序通常采用如下方式來提供圖形操作界面預先設計各個圖形操作界面中的圖標、貼圖等顯示元素,在將應用程序軟件安裝到計算機上時,將這些顯示元素存儲到該計算機的硬盤中;在應用程序的一個模塊為實現(xiàn)其功能而需要生成并顯示一定圖形界面時,從硬盤中調(diào)用與該圖形界面相對應的顯示元素,并將這些顯示元素裝載到內(nèi)存中以實現(xiàn)圖形界面的顯示。
該現(xiàn)有技術雖然能夠?qū)崿F(xiàn)為用戶提供圖形操作界面,但是,具有如下缺點在一個軟件程序中通常需要提供多種功能,并且各個功能所對應的功能模塊在實現(xiàn)各自功能時會分別使用各自獨立的資源。參見圖1所示,在該現(xiàn)有技術中,當一個功能模塊需要提供操作界面時,該功能模塊會從本地文件系統(tǒng)中調(diào)用該操作界面對應的圖形顯示元素,并將這些圖形顯示元素裝載到內(nèi)存中作為該功能模塊的獨立內(nèi)存資源使用。而當其它功能模塊需要實現(xiàn)各自操作界面時,這些操作界面也需要將各自操作界面對應的圖形顯示元素裝載到內(nèi)存中并作為獨立內(nèi)存資源使用。由于在軟件設計過程中,通常需要保持軟件顯示、操作方式等的一致性,因此,軟件程序中的各個功能所對應的圖形操作界面也通常會包括許多相同的顯示元素,在此情況下,由于各個功能模塊分別將各自的圖形顯示元素裝載到內(nèi)存中并作為獨立內(nèi)存資源使用,顯然會使得相同的顯示圖形元素被多次重復裝載到內(nèi)存空間中,從而造成內(nèi)存資源的浪費,使得程序運行速度降低,并給用戶以內(nèi)存當前占用率很高的感覺。
以一個即時通訊軟件程序為例,在該軟件程序中,提供了交談、會話、發(fā)送手機短信這三種功能,參見圖2,這三種功能對應的圖形操作界面具有相同的背景圖,且每個按鈕上的貼圖也均一致。如果采用現(xiàn)有技術實現(xiàn)提供圖形操作界面,則交談功能模塊、會話功能模塊以及發(fā)送手機短信功能模塊將分別將這些相同的背景圖以及貼圖裝載到內(nèi)存中,并作為各自的獨立資源使用來提供圖形顯示界面,從而會造成內(nèi)存資源浪費。
另外,在現(xiàn)有技術中,裝載各個功能對應圖形操作界面顯示元素的獨立內(nèi)存資源通常只在退出程序時才被釋放,如果程序曾經(jīng)使用過某個功能,則即使在當前并不使用該功能的情況下,裝載該功能對應顯示元素的內(nèi)存資源也不會被釋放,從而導致對內(nèi)存資源的浪費。這種內(nèi)存資源的浪費在軟件程序能夠提供數(shù)量較多的功能時尤其明顯,內(nèi)存資源會隨著運行過的功能數(shù)量的增加而被越來越多的占用,從而降低了內(nèi)存資源的使用效率,使程序運行速度降低,并對用戶的使用感受造成較大影響。
另外,對于軟件程序所使用的其它資源,同樣也存在上述問題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種實現(xiàn)程序資源共享的系統(tǒng)及方法,能夠?qū)ο嗤膱D形顯示元素實現(xiàn)共享,從而避免對內(nèi)存資源的浪費,進一步地,還可對根據(jù)圖形顯示元素的使用情況,對內(nèi)存資源進行主動釋放,從而提高內(nèi)存資源的使用效率。
為實現(xiàn)上述目的,本發(fā)明提供了一種實現(xiàn)程序資源共享的系統(tǒng),該系統(tǒng)包括共享資源池、資源查詢模塊以及資源生成模塊,其中共享資源池用于裝載實現(xiàn)軟件程序功能所需要的各個資源;資源查詢模塊用于接收軟件程序根據(jù)其所需實現(xiàn)功能發(fā)送的獲取資源請求,根據(jù)該請求查詢共享資源池中是否裝載有相應的資源,在查詢得到相應資源時,從共享資源池中引用該資源以提供給軟件程序?qū)崿F(xiàn)所述功能,在查詢不到相應資源時,向資源生成模塊發(fā)送資源生成通知;資源生成模塊用于根據(jù)接收到的資源生成通知以及輸入的資源參數(shù),動態(tài)生成所述查詢不到的相應資源,并引用該資源給程序使用,以及,將該生成的資源裝載到共享資源池中。
其中,該系統(tǒng)進一步包括資源引用管理模塊、資源狀態(tài)管理模塊和資源銷毀模塊,其中資源引用管理模塊用于計算共享資源池中各個資源當前被引用的次數(shù),并將該次數(shù)提供給資源銷毀模塊;資源狀態(tài)管理模塊用于根據(jù)對共享資源池中各個資源當前所進行的操作,管理共享資源池中各個資源的當前狀態(tài);資源銷毀模塊用于根據(jù)資源引用管理模塊所提供的資源引用次數(shù)以及資源狀態(tài)管理模塊所提供的資源的當前狀態(tài),刪除當前未被引用并且處于空閑狀態(tài)的資源,并釋放該資源所占用的內(nèi)存空間。
其中,資源生成模塊包括資源類型管理模塊以及內(nèi)存資源動態(tài)生成模塊,其中資源類型管理模塊用于根據(jù)各個資源的類型不同分別保存不同類型的模板,根據(jù)資源查詢模塊發(fā)送的資源生成通知調(diào)用相應模板并提供給內(nèi)存資源動態(tài)生成模塊;內(nèi)存資源動態(tài)生成模塊用于根據(jù)所述輸入的資源參數(shù)以及資源類型管理模塊提供的模板,動態(tài)生成所述查詢不到的資源,引用該生成的資源給程序使用,并在共享資源池中裝載該資源。
其中,該系統(tǒng)進一步包括資源適配管理模塊,用于將所述各個模塊對共享資源池的操作轉(zhuǎn)化為與共享資源池所裝載的資源類型相適應的統(tǒng)一類型的操作,以及,將資源生成模塊生成的資源類型轉(zhuǎn)換為與共享資源池中所裝載的資源相一致的類型,將資源查詢模塊從共享資源池中所引用的資源轉(zhuǎn)換為軟件程序所需要的資源類型。
其中,所述資源查詢模塊進一步用于保存各個資源與其各自資源標識的對應關系,資源查詢模塊根據(jù)該對應關系查詢共享資源池中是否裝載有相應的資源;資源生成模塊進一步用于建立所述動態(tài)生成的相應資源與其資源標識的對應關系,并將該對應關系提供給資源查詢模塊保存。
本發(fā)明還提供了一種實現(xiàn)程序資源共享的方法,該方法包括步驟A軟件程序初始化,共享資源池從該軟件程序的文件系統(tǒng)中獲取該軟件程序所需的各個資源,并在該共享資源池中裝載這些資源;步驟B軟件程序開始其功能實現(xiàn)過程,根據(jù)其所需實現(xiàn)的功能,發(fā)送資源獲取資源請求,根據(jù)收到的獲取資源請求查詢共享資源池中是否裝載有相應資源,如果查詢到相應資源,則對該資源執(zhí)行步驟C,如果未查詢到相應資源,則執(zhí)行步驟D;步驟C引用在共享資源池中查詢到的相應資源,并將該引用的資源提供給軟件程序以實現(xiàn)其相應功能,然后結(jié)束本流程;步驟D根據(jù)所述的資源獲取請求生成所述未被查詢到的相應資源,引用該資源提供給軟件程序以實現(xiàn)其相應功能,并將該生成的資源裝載到共享資源池中。
其中,該方法進一步包括分別判斷共享資源池中的各個資源當前是否被引用,如果是,則不執(zhí)行操作,否則,刪除該當前未被引用的資源,釋放共享資源池中該資源的內(nèi)存空間。
其中,該方法進一步包括預先為裝載到共享資源池中的各個資源設定資源引用次數(shù)變量,并將該變量初始化為0;步驟C所述引用在共享資源池中查詢到的相應資源進一步包括將所引用的資源的資源引用次數(shù)變量的值加1;所述判斷資源當前是否被引用的方法為判斷該資源的資源引用次數(shù)變量的值是否為0,如果是,則判斷得到該資源當前未被引用,否則,判斷得到該資源當前被引用。
其中,所述刪除當前未被引用的資源的方法為利用保存的資源與其資源標識的對應關系,根據(jù)當前未被引用的資源的資源標識查找得到該未被引用的資源,刪除該資源,并刪除該資源與其資源標識的對應關系。
其中,所述刪除當前未被引用的資源之前,該方法進一步包括判斷該當前未被引用的資源的當前狀態(tài)是否為空閑狀態(tài),如果是,則執(zhí)行所述刪除該當前未被引用的資源的步驟。
其中,步驟A所述共享資源池從該軟件程序的文件系統(tǒng)中獲取該軟件程序所需的各個資源的方法為步驟A1軟件程序開始初始化過程,向共享資源池發(fā)送初始化開始指令,其中,初始化開始指令中包括該軟件程序的標識;步驟A2共享資源池根據(jù)接收到的初始化開始指令中的軟件程序標識,向該軟件程序的文件系統(tǒng)請求獲取該軟件程序所需的各個資源;步驟A3所述軟件程序的文件系統(tǒng)將保存在其上的該軟件程序的各個資源發(fā)送給共享資源池。
其中,步驟A所述在該共享資源池中裝載這些資源進一步包括建立所述資源與其各自資源標識的對應關系,并保存該對應關系;步驟B所述根據(jù)收到的獲取資源請求查詢共享資源池中是否裝載有相應資源的方法為根據(jù)所保存的資源與各自資源標識的對應關系,查詢共享資源池中是否裝載有獲取資源請求中所指定的資源。
其中,步驟D所述生成未被查詢得到的相應資源進一步包括建立該生成的資源與其資源標識的對應關系,并保存該對應關系;
步驟B所述根據(jù)收到的獲取資源請求查詢共享資源池中是否裝載有相應資源的方法為根據(jù)所保存的資源與各自資源標識的對應關系,查詢共享資源池中是否裝載有獲取資源請求中所指定的資源。
其中,所述資源為顯示圖形元素資源。
可見,本發(fā)明采用共享資源池對軟件程序各個功能的資源進行統(tǒng)一管理,從而使得各個功能不再由于分別獨立占用內(nèi)存空間而浪費內(nèi)存,從而大大減少了軟件內(nèi)存的占用量,使得用戶可以順暢的使用軟件提供的各項功能。另外,本發(fā)明能夠?qū)蚕碣Y源池中的各個資源進行主動釋放,從而將未被引用的內(nèi)存及時刪除并釋放其內(nèi)存空間,使得軟件不會因為長時間運行而占用過多的內(nèi)存資源,實現(xiàn)了對內(nèi)存資源的有效管理。
圖1為現(xiàn)有技術中所采用的獨立資源內(nèi)存結(jié)構(gòu)示意圖。
圖2為一軟件程序圖形操作界面的示意圖。
圖3為本發(fā)明所提供的系統(tǒng)的示意圖。
圖4為本發(fā)明一優(yōu)選實施例中的系統(tǒng)示意圖。
圖5為本發(fā)明一優(yōu)選實施例中的系統(tǒng)示意圖。
圖6為實現(xiàn)本發(fā)明的流程圖。
圖7為實現(xiàn)步驟600的流程圖。
圖8為實現(xiàn)步驟602的流程圖。
圖9為實現(xiàn)步驟604的流程圖。
圖10為實現(xiàn)步驟605的流程圖。
具體實施例方式
本發(fā)明為一種程序資源的共享系統(tǒng)及方法,采用共享資源池的方式統(tǒng)一管理程序資源,在程序中的各個模塊分別實現(xiàn)各自功能時,判斷共享資源池中是否具有所需的資源,如果是,則使用共享資源池中的該資源,從而實現(xiàn)相應功能,如果沒有,則生成所需資源并存儲在共享資源池中,利用共享資源池中新生成的資源實現(xiàn)相應功能。另外,本發(fā)明還對共享資源池中的各個資源的調(diào)用情況進行判斷,如果判斷得到一個資源當前未被調(diào)用,則主動釋放該資源所占用的內(nèi)存空間,從而降低對內(nèi)存的占用,提高內(nèi)存的使用效率。
下面結(jié)合附圖對本發(fā)明進行詳細描述。
參見圖3,本發(fā)明所提供的系統(tǒng)至少包括共享資源池、資源查詢模塊、資源生成模塊,其中共享資源池用于預先從軟件程序的文件系統(tǒng)中獲取實現(xiàn)該程序功能的各個資源,并裝載所獲取的這些資源;資源查詢模塊用于根據(jù)程序發(fā)送的獲取資源請求,在共享資源池中查詢與該請求對應的資源并引用該資源提供給程序使用,以及,在查詢不到對應資源時,向資源生成模塊發(fā)送資源生成通知;資源生成模塊用于在接收到資源查詢模塊發(fā)送來的資源生成通知后,根據(jù)輸入的資源參數(shù)動態(tài)生成與獲取資源請求相對應的資源并引用該資源給程序使用,以及,將該資源裝載到共享資源池中。
參見圖4,在本發(fā)明一優(yōu)選實施例中,資源生成模塊包括資源類型管理模塊以及內(nèi)存資源動態(tài)生成模塊,其中資源類型管理模塊根據(jù)資源類型的不同分別保存有各個類型資源對應的模板,并在接收到資源查詢模塊發(fā)送來的資源生成通知后,查詢得到與所需生成的資源相對應的模板,并將該模板提供給內(nèi)存資源動態(tài)生成模塊;其中,所述各個類型資源對應的模板中分別包括生成該類型資源的過程中所需要的公共參數(shù)、生成方式等內(nèi)容;內(nèi)存資源動態(tài)生成模塊用于接收與所需生成資源相對應的類型參數(shù),利用該類型參數(shù)以及資源類型管理模塊提供的模板動態(tài)生成所需生成的資源,引用該生成的資源給程序使用,并在共享資源池中裝載該資源。
參見圖5,在本發(fā)明一優(yōu)選實施例中,為了能夠?qū)崿F(xiàn)對共享資源池中的資源進行主動管理,以便在資源不被調(diào)用時能及時釋放該資源所占用的內(nèi)存空間,本發(fā)明所提供的系統(tǒng)還可以進一步包括資源引用管理模塊、資源狀態(tài)管理模塊和資源銷毀模塊,其中資源引用管理模塊用于計算共享資源池中各個資源當前被引用的次數(shù),并將該次數(shù)提供給資源銷毀模塊;其具體計算方法為預先為共享資源池中的各個資源定義引用次數(shù)變量,并將該變量初始化為0,當引用共享資源池中的某一資源時,將該資源的引用次數(shù)變量加1,當由于軟件程序關閉功能而使得某一資源不再被引用時,將該資源的引用次數(shù)變量減1;資源狀態(tài)管理模塊用于管理共享資源池中各個資源的當前狀態(tài),根據(jù)對資源當前所進行操作,將該資源的狀態(tài)設置或切換為查詢狀態(tài)、就緒狀態(tài)、使用狀態(tài)、或非使用狀態(tài);其中,查詢狀態(tài)和使用狀態(tài)表明該資源處于忙狀態(tài),在該狀態(tài)下,由于該資源正在或者即將被使用,因此不能刪除該資源;就緒狀態(tài)和非使用狀態(tài)表明該資源處于空閑狀態(tài),在該狀態(tài)下,由于資源未被使用,因此,可以刪除該資源;資源銷毀模塊用于根據(jù)資源引用管理模塊所提供的資源引用次數(shù),判斷各個資源當前是否被引用,在判斷得到一個資源未被引用時,從資源狀態(tài)管理模塊獲取該資源的當前狀態(tài),在該資源處于就緒狀態(tài)或者非使用狀態(tài)時刪除該資源,以釋放該資源所占用的內(nèi)存空間。
在本發(fā)明的具體實現(xiàn)過程中,為了能夠有效實現(xiàn)對資源的查詢,在資源查詢模塊中進一步保存各個資源與其各自資源標識的對應關系,資源查詢模塊收到獲取資源請求后,提取該資源請求中的資源標識,根據(jù)所保存的資源與各自資源標識的對應關系,判斷是否有與資源請求中的資源標識相對應的資源,以此實現(xiàn)對共享資源池中是否有請求對應的資源的判斷。與之相對應的,資源生成模塊在新生成資源時進一步用于生建立新生成資源與其資源標識的對應關系,并將該對應關系提供給資源查詢模塊保存。
在以上圖4、圖5所示的各個優(yōu)選實施例中,本發(fā)明所提供的系統(tǒng)進一步包括資源適配管理模塊,該模塊用于將上述各個模塊對共享資源池的操作轉(zhuǎn)化為與共享資源池所裝載的資源類型相適應的統(tǒng)一類型的操作,以及用于將資源生成模塊生成的資源類型轉(zhuǎn)換為與共享資源池中所裝載的資源相一致的類型,將資源查詢模塊從共享資源池中所引用的資源轉(zhuǎn)換為軟件程序所需要的資源類型,從而實現(xiàn)上述各個模塊與共享資源池之間的透明操作,減少由于資源類型不同所導致的共享資源池與上述各個模塊無法協(xié)同工作的問題,從而降低共享資源池與上述各個模塊之間的耦合性要求,使得本發(fā)明所提供的系統(tǒng)更容易實現(xiàn)。
以上所述為本發(fā)明所提供的系統(tǒng)的具體實現(xiàn),下面對本發(fā)明所提供的方法進行詳細介紹。
參見圖6,本發(fā)明所提供的方法包括步驟600軟件程序初始化,共享資源池從該軟件程序的文件系統(tǒng)中獲取該軟件程序所需的各個資源,并在該共享資源池中裝載這些資源;步驟601軟件程序開始其功能實現(xiàn)過程,發(fā)送資源獲取資源請求,以請求獲得實現(xiàn)所述功能所需要的資源;步驟602根據(jù)接收到的資源獲取請求查詢在共享資源池中是否裝載有相應資源,如果查詢到相應資源,則對該資源執(zhí)行步驟603,否則,執(zhí)行步驟604;步驟603引用共享資源池中查詢到的資源,并將該引用的資源提供給軟件程序,軟件程序利用該資源以實現(xiàn)其相應功能,并結(jié)束本流程;步驟604根據(jù)所述的資源獲取請求生成未被查詢到的資源,引用該資源提供給軟件程序以實現(xiàn)其相應功能,并將該生成的資源裝載到共享資源池中。
在本發(fā)明中,為了能夠及時刪除未被引用的資源,釋放該資源所占用的內(nèi)存空間,該方法還可進一步包括步驟605分別判斷共享資源池中的各個資源當前是否被引用,如果是,則不執(zhí)行操作,否則,刪除該當前未被引用的資源,釋放共享資源池中該資源的內(nèi)存空間。其中,步驟605的實現(xiàn)不受上述步驟600~步驟604的執(zhí)行順序影響,可以在實現(xiàn)本發(fā)明所提供的方法的任意時刻執(zhí)行步驟605,并不影響本發(fā)明的實現(xiàn)。
下面對上述步驟的具體實現(xiàn)分別加以詳細描述。
(一)步驟600的具體實現(xiàn)參見圖7,在本發(fā)明實施例中,采用如下步驟實現(xiàn)步驟600步驟6001軟件程序開始初始化過程,向共享資源池發(fā)送初始化開始指令,其中,初始化開始指令中包括該軟件程序的標識;步驟6002共享資源池根據(jù)接收到的初始化開始指令中的軟件程序標識,向該軟件程序的文件系統(tǒng)請求獲取該軟件程序所需的各個資源;步驟6003所述軟件程序的文件系統(tǒng)將保存在其上的各個資源發(fā)送給共享資源池,共享資源池接收各個資源并裝載這些資源;步驟6004建立各個資源與其資源標識的對應關系,并保存該對應關系,以供步驟602查詢資源時使用;其中,在本發(fā)明實施例中,預先建立一個Map表,將所述資源與資源標識的映射關系保存在該Map表中,從而實現(xiàn)上述建立對應關系的步驟;在本發(fā)明其它實施例中,也可采用其它方式建立和保存資源與其資源標識的對應關系,并不影響本發(fā)明的實現(xiàn);另外,在本發(fā)明實施例中,在資源裝載到共享資源池中之后才執(zhí)行上述建立對應關系的步驟,在本發(fā)明其它實施例中,也可以在共享資源池接收到各個資源的同時,建立這些資源與其資源標識的對應關系并保存,并不影響本發(fā)明的實現(xiàn)。
(二)步驟601的具體實現(xiàn)在本發(fā)明實施例中,軟件程序開始其功能實現(xiàn)過程后,向共享資源池發(fā)送資源獲取請求,該資源獲取請求中包括本次所需要實現(xiàn)功能的標識,以供步驟602中根據(jù)該標識進行資源查詢。
(三)步驟602的具體實現(xiàn)在本發(fā)明具體實施例中,由于在步驟600中已經(jīng)建立了各個資源與其資源標識的對應關系,因此,參見圖8,步驟602可以利用如下步驟實現(xiàn)步驟6021共享資源池根據(jù)收到的資源獲取請求中的功能標識,確定本次需要實現(xiàn)的功能;步驟6022共享資源池根據(jù)本次需要實現(xiàn)的功能確定實現(xiàn)該功能所需要的各個資源的資源標識,利用這些資源標識以及步驟600中所建立的資源和資源標識的對應關系,查找共享資源池中是否裝載有這些資源,如果查找得到有相應的資源,則利用該資源執(zhí)行步驟603,如果對于一些資源未在共享資源池中查找到,則通過執(zhí)行步驟604生成該資源。
(四)步驟603的具體實現(xiàn)在本發(fā)明實施例中,結(jié)合后續(xù)需要對共享資源池中的資源進行主動釋放的步驟,按照以下方式實現(xiàn)步驟603共享資源池引用所述查詢到的資源,提供給軟件程序使用以實現(xiàn)其功能,并且,累加該資源當前所引用的次數(shù),在本發(fā)明實施例中,預先為各個資源設定資源引用次數(shù)變量,并將該變量初始化為0,在引用各個資源時,分別將該資源對應的資源引用次數(shù)變量加1,從而實現(xiàn)對資源的引用次數(shù)進行計數(shù)。
(五)步驟604的具體實現(xiàn)參見圖9,在本發(fā)明實施例中,采用如下步驟實現(xiàn)步驟604步驟6041根據(jù)所述資源獲取請求,確定該資源所屬的類型,并接收輸入的該資源的類型參數(shù);步驟6042根據(jù)所述資源所屬的類型確定與該資源對應的模板,利用該模板以及接收到的類型參數(shù),生成資源獲取請求所要求獲取的資源;步驟6043將該生成的資源裝載到共享資源池中,以及,建立該生成的資源與其資源標識的對應關系,并保存在該對應關系;其中,在本發(fā)明實施例中,采用Map表的方式保存上述對應關系,在本發(fā)明其它實施例中,也可采用其它方式進行保存,并不影響本發(fā)明的實現(xiàn);步驟6044共享資源池引用該生成的資源并將該引用的資源提供給軟件程序?qū)崿F(xiàn)其相應功能。
(六)步驟605的具體實現(xiàn)
參見圖10,在本發(fā)明實施例中,通過利用上述Map表來實現(xiàn)步驟605,具體包括以下步驟步驟6051分別讀取共享資源池中所裝載的各個資源的資源引用次數(shù)變量,分別判斷各個資源的資源引用次數(shù)變量是否為0,如果是,則對該資源執(zhí)行步驟6052,否則,不執(zhí)行操作,并結(jié)束本流程;步驟6052根據(jù)保存有資源標識與資源對應關系的Map表,由判斷得到的當前引用次數(shù)為0的資源的資源標識,在共享資源池中查找得到相應的資源;步驟6053判斷步驟6052中所查找到的資源的當前狀態(tài),如果該狀態(tài)為查詢狀態(tài)或者使用狀態(tài),則不執(zhí)行后續(xù)步驟,結(jié)束本流程,否則,表明該資源當前處于就緒或者未被使用這樣的空閑狀態(tài),則執(zhí)行步驟6054;步驟6054在共享資源池中刪除步驟6052中所查找得到的資源,釋放該資源所占用的內(nèi)存空間,以及刪除該資源與其資源標識的對應關系。
在以上實施例中,所述的資源可以是顯示圖形元素資源,也可以是其它類型的程序資源,實現(xiàn)方法與上述實施例一致,并不影響本發(fā)明的實現(xiàn)。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種實現(xiàn)程序資源共享的系統(tǒng),其特征在于,該系統(tǒng)包括共享資源池、資源查詢模塊以及資源生成模塊,其中共享資源池用于裝載實現(xiàn)軟件程序功能所需要的各個資源;資源查詢模塊用于接收軟件程序根據(jù)其所需實現(xiàn)功能發(fā)送的獲取資源請求,根據(jù)該請求查詢共享資源池中是否裝載有相應的資源,在查詢得到相應資源時,從共享資源池中引用該資源以提供給軟件程序?qū)崿F(xiàn)所述功能,在查詢不到相應資源時,向資源生成模塊發(fā)送資源生成通知;資源生成模塊用于根據(jù)接收到的資源生成通知以及輸入的資源參數(shù),動態(tài)生成所述查詢不到的相應資源,并引用該資源給程序使用,以及,將該生成的資源裝載到共享資源池中。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,該系統(tǒng)進一步包括資源引用管理模塊、資源狀態(tài)管理模塊和資源銷毀模塊,其中資源引用管理模塊用于計算共享資源池中各個資源當前被引用的次數(shù),并將該次數(shù)提供給資源銷毀模塊;資源狀態(tài)管理模塊用于根據(jù)對共享資源池中各個資源當前所進行的操作,管理共享資源池中各個資源的當前狀態(tài);資源銷毀模塊用于根據(jù)資源引用管理模塊所提供的資源引用次數(shù)以及資源狀態(tài)管理模塊所提供的資源的當前狀態(tài),刪除當前未被引用并且處于空閑狀態(tài)的資源,并釋放該資源所占用的內(nèi)存空間。
3.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,資源生成模塊包括資源類型管理模塊以及內(nèi)存資源動態(tài)生成模塊,其中資源類型管理模塊用于根據(jù)各個資源的類型不同分別保存不同類型的模板,根據(jù)資源查詢模塊發(fā)送的資源生成通知調(diào)用相應模板并提供給內(nèi)存資源動態(tài)生成模塊;內(nèi)存資源動態(tài)生成模塊用于根據(jù)所述輸入的資源參數(shù)以及資源類型管理模塊提供的模板,動態(tài)生成所述查詢不到的資源,引用該生成的資源給程序使用,并在共享資源池中裝載該資源。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在于,該系統(tǒng)進一步包括資源適配管理模塊,用于將所述各個模塊對共享資源池的操作轉(zhuǎn)化為與共享資源池所裝載的資源類型相適應的統(tǒng)一類型的操作,以及,將資源生成模塊生成的資源類型轉(zhuǎn)換為與共享資源池中所裝載的資源相一致的類型,將資源查詢模塊從共享資源池中所引用的資源轉(zhuǎn)換為軟件程序所需要的資源類型。
5.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述資源查詢模塊進一步用于保存各個資源與其各自資源標識的對應關系,資源查詢模塊根據(jù)該對應關系查詢共享資源池中是否裝載有相應的資源;資源生成模塊進一步用于建立所述動態(tài)生成的相應資源與其資源標識的對應關系,并將該對應關系提供給資源查詢模塊保存。
6.一種實現(xiàn)程序資源共享的方法,其特征在于,該方法包括步驟A軟件程序初始化,共享資源池從該軟件程序的文件系統(tǒng)中獲取該軟件程序所需的各個資源,并在該共享資源池中裝載這些資源;步驟B軟件程序開始其功能實現(xiàn)過程,根據(jù)其所需實現(xiàn)的功能,發(fā)送資源獲取資源請求,根據(jù)收到的獲取資源請求查詢共享資源池中是否裝載有相應資源,如果查詢到相應資源,則對該資源執(zhí)行步驟C,如果未查詢到相應資源,則執(zhí)行步驟D;步驟C引用在共享資源池中查詢到的相應資源,并將該引用的資源提供給軟件程序以實現(xiàn)其相應功能,然后結(jié)束本流程;步驟D根據(jù)所述的資源獲取請求生成所述未被查詢到的相應資源,引用該資源提供給軟件程序以實現(xiàn)其相應功能,并將該生成的資源裝載到共享資源池中。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于該方法進一步包括分別判斷共享資源池中的各個資源當前是否被引用,如果是,則不執(zhí)行操作,否則,刪除該當前未被引用的資源,釋放共享資源池中該資源的內(nèi)存空間。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,該方法進一步包括預先為裝載到共享資源池中的各個資源設定資源引用次數(shù)變量,并將該變量初始化為0;步驟C所述引用在共享資源池中查詢到的相應資源進一步包括將所引用的資源的資源引用次數(shù)變量的值加1;所述判斷資源當前是否被引用的方法為判斷該資源的資源引用次數(shù)變量的值是否為0,如果是,則判斷得到該資源當前未被引用,否則,判斷得到該資源當前被引用。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述刪除當前未被引用的資源的方法為利用保存的資源與其資源標識的對應關系,根據(jù)當前未被引用的資源的資源標識查找得到該未被引用的資源,刪除該資源,并刪除該資源與其資源標識的對應關系。
10.根據(jù)權(quán)利要求7或9所述的方法,其特征在于,所述刪除當前未被引用的資源之前,該方法進一步包括判斷該當前未被引用的資源的當前狀態(tài)是否為空閑狀態(tài),如果是,則執(zhí)行所述刪除該當前未被引用的資源的步驟。
11.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟A所述共享資源池從該軟件程序的文件系統(tǒng)中獲取該軟件程序所需的各個資源的方法為步驟A1軟件程序開始初始化過程,向共享資源池發(fā)送初始化開始指令,其中,初始化開始指令中包括該軟件程序的標識;步驟A2共享資源池根據(jù)接收到的初始化開始指令中的軟件程序標識,向該軟件程序的文件系統(tǒng)請求獲取該軟件程序所需的各個資源;步驟A3所述軟件程序的文件系統(tǒng)將保存在其上的該軟件程序的各個資源發(fā)送給共享資源池。
12.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟A所述在該共享資源池中裝載這些資源進一步包括建立所述資源與其各自資源標識的對應關系,并保存該對應關系;步驟B所述根據(jù)收到的獲取資源請求查詢共享資源池中是否裝載有相應資源的方法為根據(jù)所保存的資源與各自資源標識的對應關系,查詢共享資源池中是否裝載有獲取資源請求中所指定的資源。
13.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟D所述生成未被查詢得到的相應資源進一步包括建立該生成的資源與其資源標識的對應關系,并保存該對應關系;步驟B所述根據(jù)收到的獲取資源請求查詢共享資源池中是否裝載有相應資源的方法為根據(jù)所保存的資源與各自資源標識的對應關系,查詢共享資源池中是否裝載有獲取資源請求中所指定的資源。
14.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述資源為顯示圖形元素資源。
全文摘要
本發(fā)明公開了一種實現(xiàn)程序資源共享的系統(tǒng),該系統(tǒng)包括共享資源池、資源查詢模塊以及資源生成模塊,其中共享資源池用于裝載實現(xiàn)軟件程序功能所需要的各個資源;資源查詢模塊用于接收軟件程序根據(jù)其所需實現(xiàn)功能發(fā)送的獲取資源請求,根據(jù)該請求查詢共享資源池中是否裝載有相應的資源,在查詢得到相應資源時,從共享資源池中引用該資源以提供給軟件程序?qū)崿F(xiàn)所述功能,在查詢不到相應資源時,向資源生成模塊發(fā)送資源生成通知;資源生成模塊用于根據(jù)接收到的資源生成通知以及輸入的資源參數(shù),動態(tài)生成所述查詢不到的相應資源,并引用該資源給程序使用,以及,將該生成的資源裝載到共享資源池中。本發(fā)明還公開了實現(xiàn)程序資源共享的方法。
文檔編號G06F9/46GK1889047SQ20051007999
公開日2007年1月3日 申請日期2005年6月27日 優(yōu)先權(quán)日2005年6月27日
發(fā)明者李斌 申請人:騰訊科技(深圳)有限公司