[發明專利]一種使用寄生對象管理對象堆的方法和裝置有效
| 申請號: | 201310537587.5 | 申請日: | 2013-11-04 |
| 公開(公告)號: | CN103559076A | 公開(公告)日: | 2014-02-05 |
| 發明(設計)人: | 陸舟;于華章 | 申請(專利權)人: | 飛天誠信科技股份有限公司 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100085 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 使用 寄生 對象 管理 方法 裝置 | ||
技術領域
本發明涉及計算機技術領域,特別是涉及一種使用寄生對象管理對象堆的方法和裝置。
背景技術
現有技術中,Java卡虛擬機將已創建的對象存儲到對象堆中,在需要使用已創建的對象時,從對象表中獲取該對象的引用值,并使用該引用值訪問對象堆中的該對象。Java卡虛擬機在創建新對象時,為新對象申請的空間通常為對象堆中位于最后一個對象后的空間。如果對象堆中位于最后一個對象后的空間小于新對象占用的空間,Java卡虛擬機會返回資源不足的錯誤信息。此外,Java卡虛擬機在執行完刪包或刪應用操作后,以及在檢測到java卡應用程序調用與垃圾回收對應的預設API后,會進行垃圾回收操作,即,掃描對象堆,通過移動對象使對象堆中的已創建的對象連續排列,將不同對象之間的空間碎片集合成一個連續的存儲空間。
發明人在實現本發明的過程中,發現現有技術至少存在以下缺陷:
由于對象堆中的各個對象的生命周期不同,經過多次創建和刪除對象后,對象堆中的可用空間通常是不連續的,而在創建新對象時,為新對象申請的空間通常為對象堆中位于最后一個對象后的空間,因此,在進行垃圾回收之前,已創建對象之間的空閑碎片無法得到有效的利用,導致對象堆的空間利用率低。另外,當上層應用頻繁地調用API進行垃圾回收,Java卡虛擬機也需要頻繁移動對象合并碎片,時間消耗較大,降低了Java卡虛擬機的工作效率。
發明內容
本發明提供了一種使用寄生對象管理對象堆的方法和裝置,以解決現有技術中對象堆的空間利用率低的缺陷。
本發明提供了一種使用寄生對象管理對象堆的方法,所述寄生對象用于標記所述對象堆中的空閑空間,包括地址字節和容量字節,所述地址字節用于表示所述寄生對象的后一個寄生對象的地址,所述容量字節用于表示所述寄生對象所標記的空閑空間的大小,Java卡虛擬機的系統信息中存儲有所述對象堆中的第一個寄生對象的地址;
所述Java卡虛擬機需要在所述對象堆中創建非寄生對象時,執行以下操作:
S1、所述Java卡虛擬機讀取所述對象堆中的第一個寄生對象,將所述第一個寄生對象作為當前寄生對象;
S2、所述Java卡虛擬機判斷當前寄生對象所標記的空閑空間是否小于待創建對象所占用的空間,如果是,則執行步驟S3;否則,執行步驟S10;
S3、所述Java卡虛擬機判斷所述對象堆中是否存在當前寄生對象的后一個寄生對象,如果是,則執行步驟S4;否則,執行步驟S5;
S4、所述Java卡虛擬機將當前寄生對象的后一個寄生對象,作為更新后的當前寄生對象,并返回步驟S2;
S5、所述Java卡虛擬機將所述對象堆中的所有空閑空間進行合并,根據合并后的空閑空間創建對應的寄生對象,判斷所述合并后的空閑空間是否小于所述待創建對象所占用的空間,如果是,則將創建的寄生對象的地址作為所述對象堆中的第一個寄生對象的地址保存到所述系統信息中,結束流程;否則,執行步驟S6;
S6、所述Java卡虛擬機讀取當前寄生對象的地址字節,將讀取到的結果作為所述對象堆中的第一個寄生對象的地址保存到所述系統信息中;
S7、所述Java卡虛擬機從當前寄生對象的地址開始,為所述待創建對象申請空間,獲取申請空間后的剩余空間;
S8、所述Java卡虛擬機判斷所述剩余空間是否大于寄生對象所占用的空間,如果是,則執行步驟S9;否則,結束流程;
S9、所述Java卡虛擬機從所述剩余空間的首地址開始,創建第一寄生對象,將所述第一寄生對象的地址作為所述對象堆中的第一個寄生對象的地址保存到所述系統信息中,結束流程;
S10、所述Java卡虛擬機從當前寄生對象的地址開始,為所述待創建對象申請空間,并對當前寄生對象的前一個寄生對象,和/或所述系統信息中存儲的所述對象堆中的第一個寄生對象的地址進行更新。
本發明還提供了一種使用寄生對象管理對象堆的裝置,所述寄生對象用于標記所述對象堆中的空閑空間,包括地址字節和容量字節,所述地址字節用于表示所述寄生對象的后一個寄生對象的地址,所述容量字節用于表示所述寄生對象所標記的空閑空間的大小,系統信息中存儲有所述對象堆中的第一個寄生對象的地址;
所述裝置,包括:
第一讀取模塊,用于在需要在所述對象堆中創建非寄生對象時,讀取所述對象堆中的第一個寄生對象,將所述第一個寄生對象作為當前寄生對象,并觸發第一判斷模塊;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于飛天誠信科技股份有限公司,未經飛天誠信科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310537587.5/2.html,轉載請聲明來源鉆瓜專利網。





