專利名稱:用于縮短java程序中的類加載處理的系統和方法
技術領域:
本發明涉及一種用于縮短Java程序中的類加載處理的系統和方法。具體地說,本發明涉及一種用于縮短Java程序中的類加載處理的系統和方法,其中,在執行Java程序中的類加載處理所產生的運行時數據被以圖像的形式存儲,然后在日后執行所述Java程序時檢索并執行所存儲的運行時數據,借此縮短所述的類加載時間。
背景技術:
最近,隨著移動終端使用的逐漸增加,運行于移動終端的Java程序(例如游戲、軟件包(messenger)等)的規模變得較大。
但是,為了執行一個Java程序,應當首先在Java虛擬機(JVM)中執行類加載處理。另外,為了完成所述的類加載處理,還應當執行包括加載、鏈接、初始化等的處理。此外,所述鏈接處理包括認證、準備、分解等處理。因此,存在大量的時間被花費在執行所述的類加載處理上的問題。
特別是,對于相同字節的代碼,可以只在最初執行所述Java程序時才執行所述類加載處理當中的認證處理。但是,當前的類加載處理被設計成無論在什么時候執行所述Java程序都要執行所述認證處理。由此,傳統的類加載處理存在下述問題,即,在諸如具有低性能CPU和低容量電池的移動終端的系統中,系統的響應時間增加并且電池被很快的耗盡。
另外,隨著Java程序的規模變得更大時,加載該程序所花費的時間逐步地增加。因此,在這種情況下,與系統響應時間和電池壽命相關的上述問題變得更加嚴重。
發明內容
本發明試圖解決上述問題。本發明的一個目的是提供一種用于縮短Java程序中的類加載處理的系統和方法,其中,在執行Java程序中的類加載處理所產生的運行時數據被以圖像的形式存儲,并且在日后執行所述Java程序時檢索和執行所存儲的運行時數據,借此以縮短類加載的時間。
本發明的另一個目的是提供一種用于縮短Java程序中的類加載處理的系統和方法,其中,改善了在裝備有低性能CPU和/或低容量電池的情況下,所述Java程序的處理速度,借此,減少了對用戶的響應時間和節省了電池能量。
根據用于實現所述目的的本發明的一個方面,提供了一種用于縮短Java程序中的類加載處理的系統,包括類加載器單元,用于從輔助存儲器加載Java程序的類文件,執行鏈接和初始化處理并產生運行時數據;第一存儲器單元,用于將由所述的類加載器單元產生的所述運行時數據保持在可訪問狀態;第二存儲器單元,用于存儲已經加載到所述第一存儲器單元中、處于可訪問狀態的所述運行時數據;運行時數據搜索單元,用于根據所述的類加載器單元的請求將已經以圖像的形式存儲在所述第二存儲器單元中的所述運行時數據加載到所述第一存儲器單元中;和執行單元,用于執行已經加載到所述第一存儲器單元中、處于可訪問狀態的運行時數據。
附圖簡述通過下面結合附圖對本發明最佳實施例的描述,本發明的上述和其它目的和特性將變得明顯。其中
圖1簡要示出了根據本發明用于縮短Java程序中所述類加載處理的系統的方框圖;圖2簡要示出了根據本發明用于縮短Java程序中所述類加載處理的方法的流程圖;和圖3特別示出了圖2中所示的產生運行時數據的處理的流程圖。
具體實施例方式
下面將結合附圖詳細描述本發明的最佳實施例。
圖1簡要示出了用于縮短Java程序中所述類加載處理的系統的方框圖。該系統包括類加載器單元100、第一存儲器單元200、運行時數據搜索單元300、第二存儲器單元400、執行單元500和無用數據收集器單元600。
類加載器單元100加載來自一個輔助存儲器的Java程序的類文件,執行鏈接和初始化處理,然后產生運行時數據。這里,所述加載處理是指將位于所述輔助存儲器中的所述類文件加載到一個Java虛擬機中的處理。另外,所述鏈接處理是指使得所加載的類文件被處理成它們能夠被所述Java虛擬機執行的狀態,并且包括認證、準備和分解等處理。所述運行時數據被加載到第一存儲器單元200中并用于執行所述Java程序。所述運行時數據可以被理解為常數池、方法表和字段表等。
第一存儲器單元200將由類加載器單元100產生的運行時數據保持在可訪問狀態。即,由所述類加載器單元100產生的所述運行時數據被存儲在預定存儲區域內,從而使下面將要描述的執行單元500能夠訪問所存儲的運行時數據。
第二存儲器單元400以圖像的形式存儲已經以可訪問狀態存儲在第一存儲器單元200中的所述運行時數據。
運行時數據搜索單元300根據類加載器單元100的請求將存儲在第二存儲器單元400中的所述運行時數據加載到第一存儲器單元200中。另外,運行時數據搜索單元300將已經由類加載器單元100產生的運行時數據以圖像的形式存儲到第二存儲器單元400中。另外,運行時數據搜索單元300通過使用最近最少使用的(LRU)方法管理已經以圖像形式存儲在第二存儲器單元400中的所述運行時數據。這里,根據所述LRU方法,按照較少使用的順序檢查并刪除所存儲數據當中很少使用的數據。
執行單元500執行以可訪問狀態加載到第一存儲器單元200中的所述運行時數據。
無用數據收集器單元600收集在第一存儲器單元200中未使用的存儲區域,以便允許所述未使用的區域被再次使用,借此確保第一存儲器單元200中更多的可用區域。
圖2簡要示出了根據本發明用于縮短Java程序中所述類加載處理的方法的流程圖。
首先,類加載器單元100請求運行時數據搜索單元300搜索執行一個Java程序所需的運行時數據(S100),然后,運行時數據搜索單元300在第二存儲器單元400中搜索是否存在所述運行時數據(S110)。
如果在第二存儲器單元400中發現相關的運行時數據(S120),則搜索到的運行時數據被發送給第一存儲器單元200(S125)。然后,執行單元500執行發送給第一存儲器單元200的所述運行時數據(S160)。這里,存儲在第二存儲器單元400中的所述運行時數據可以是圖像文件,即在其中以圖像形式存儲了執行各種Java程序所產生的所述運行時數據的文件。
同時,根據本發明,在前已經產生和存儲在第二存儲器單元400中的所述運行時數據被簡單地加載到第一存儲器單元200中并被執行。由此,不必在任何執行所述Java程序的時候產生所述運行時數據,借此,消除了產生所述運行時數據所需的復雜的加載處理。因此,可以減少類加載時間。
另外,如果作為由運行時數據搜索單元300進行的第二存儲器單元400的搜索的結果是不存在相關的運行時數據,則類加載器單元100產生執行所述Java程序所需的運行時數據(S130)。
下面結合圖3討論產生運行時數據的處理。首先,從輔助存儲器加載所述Java程序的類文件(S132),通過對所加載的類文件進行鏈接和初始化處理產生所述運行時數據(S134到S138)。這里,所述加載處理是指將位于所述輔助存儲器中的所述類文件加載到所述Java虛擬機中的處理;所述類文件鏈接處理是指使得所加載的類文件被處理成它們能夠被所述Java虛擬機執行的狀態的處理。具體地說,所述鏈接處理包括用于認證所加載的類文件是否包含正確的類格式的認證處理、分配存儲器區域的準備處理、和將所述的類文件轉換為可執行文件的分解處理。
在執行鏈接處理之后,所述類文件被初始化并產生所述運行時數據。運行時數據搜索單元300將所產生的運行時數據以圖像的形式存儲在第二存儲器單元400中(S140)。此時,運行時數據搜索單元300根據所述LRU方法管理存儲在第二存儲器單元400中的圖像數據。即,由于第二存儲器單元400的存儲區域是有限的,所以,使用所述LRU方法來管理所存儲的數據。
然后,運行時數據搜索單元300將以圖像形式存儲的所述運行時數據發送給第一存儲器單元200(S150),和執行單元500執行發送給第一存儲器單元200的所述運行時圖像數據(S160)。這里,如果第一存儲器單元300缺少用于數據加載的空間,那么,無用數據收集器單元600收集第一存儲器單元200中未使用的空間,并允許所收集的空間被再次使用,借此,確保在第一存儲器單元200中的更多的空間。
或者,可以在步驟S160之后執行步驟S140。即,當產生所述運行時數據時(S130),將所產生的運行時數據發送給第一存儲器單元200(S150)并執行所發送的運行時數據(S160)。然后,在所述Java程序被執行完畢之后,所述運行時數據可以被存儲在第二存儲器單元400中。
根據本發明,在執行Java程序中所述類加載處理產生的運行時數據被以圖像的形式存儲,并在日后執行所述Java程序時檢索并執行所存儲的運行時數據,借此,可以在不執行復雜的類加載處理的情況下執行所述Java程序。由此,存在一個優點,即在執行一個Java程序時可以縮短類加載時間。
另外,改善了在裝備有低性能CPU和/或低容量電池的情形下Java程序的處理速度,借此,減少了對用戶的響應時間并節省了電池能量。
雖然已經結合附圖中所示的實施例對本發明進行了描述,但它們僅僅是本發明的一些例子。本領域的普通技術人員可以理解,在不脫離由權利要求書所限定的本發明的范圍和精神的前提下,可以對其進行各種改變和修改。因此,對本發明實施例的簡單的改變在本發明的范圍之內。
權利要求
1.一種用于縮短Java程序中的類加載處理的系統,包括類加載器單元,用于從輔助存儲器加載Java程序的類文件,執行鏈接和初始化處理并產生運行時數據;第一存儲器單元,用于將由所述的類加載器單元產生的所述運行時數據保持在可訪問狀態;第二存儲器單元,用于以圖像的形式存儲已經加載到所述第一存儲器單元中、處于可訪問狀態的所述運行時數據;運行時數據搜索單元,用于根據所述的類加載器單元的請求將已經被以圖像形式存儲在所述第二存儲器單元中的所述運行時數據加載到所述第一存儲器單元中;和執行單元,用于執行已經加載到所述第一存儲器單元中、處于可訪問狀態的所述運行時數據。
2.根據權利要求1所述的系統,還包括一個無用數據收集器單元,用于收集所述第一存儲器單元中未使用的空間,并允許所述未使用的空間被再次使用。
3.根據權利要求1所述的系統,其中,所述運行時數據搜索單元使得由所述的類加載器單元產生的所述運行時數據以圖像的形式被存儲在所述第二存儲器單元中。
4.根據權利要求1所述的系統,其中,所述運行時數據搜索單元通過使用最近最少使用(LRU)方法管理已經以圖像形式存儲在所述第二存儲器單元中的所述運行時數據。
5.根據權利要求3所述的系統,其中,所述運行時數據搜索單元通過使用最近最少使用(LRU)方法管理已經以圖像形式存儲在所述第二存儲器單元中的所述運行時數據。
6.一種用于縮短Java程序中的類加載處理的方法,包括下述步驟類加載器單元請求運行時數據搜索單元搜索執行所述Java程序所需的運行時數據;運行時數據搜索單元搜索所請求的用于所述Java程序的運行時數據;將搜索到的運行時數據發送給第一存儲器單元;和執行發送給所述第一存儲器單元的所述運行時數據。
7.根據權利要求6所述的方法,其中,所述搜索到的運行時數據以圖像的形式存儲在第二存儲器單元中。
8.根據權利要求7所述的方法,其中,所述運行時數據搜索單元根據最近最少使用(LRU)方法管理存儲在所述第二存儲器單元中的所述運行時數據。
9.根據權利要求6所述的方法,還包括下述步驟如果從所請求的用于所述Java程序的運行時數據的搜索結果確定不存在相關的運行時數據,則從一個輔助存儲器加載Java程序的類文件;通過執行所加載的Java程序類文件的鏈接和初始化處理產生運行時數據;以圖像的形式存儲所產生的運行時數據;和將所述運行時圖像數據發送給所述第一存儲器單元。
10.根據權利要求9所述的方法,其中,在執行發送到所述第一存儲器單元的所述運行時數據之后,執行以圖像形式存儲所產生的運行時數據的步驟。
11.根據權利要求9所述的方法,其中,所述運行時搜索單元根據最近最少使用(LRU)方法管理所存儲的運行時圖像數據。
全文摘要
一種根據本發明的用于縮短Java程序中的類加載處理的系統,其包括類加載器單元,用于從輔助存儲器加載Java程序的類文件,執行鏈接和初始化處理并產生運行時數據;第一存儲器單元,用于將由所述類加載器單元產生的運行時數據保持在可訪問狀態;第二存儲器單元,用于以圖像的形式存儲已經被加載到第一存儲器單元中的、處于可訪問狀態的運行時數據;運行時數據搜索單元,用于根據類加載器單元的請求將已經以圖像形式存儲在第二存儲器單元中的運行時數據加載到第一存儲器單元中;和執行單元,用于執行已經加載到第一存儲器單元中、處于可訪問狀態的運行時數據。
文檔編號G06F9/44GK1519709SQ200410003658
公開日2004年8月11日 申請日期2004年2月5日 優先權日2003年2月7日
發明者崔智暎, 宋孝晶, 樸正圭, 崔智 申請人:三星電子株式會社