[發明專利]一種使用寄生對象管理對象堆的方法和裝置有效
| 申請號: | 201310537587.5 | 申請日: | 2013-11-04 |
| 公開(公告)號: | CN103559076A | 公開(公告)日: | 2014-02-05 |
| 發明(設計)人: | 陸舟;于華章 | 申請(專利權)人: | 飛天誠信科技股份有限公司 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100085 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 使用 寄生 對象 管理 方法 裝置 | ||
1.一種使用寄生對象管理對象堆的方法,其特征在于,所述寄生對象用于標記所述對象堆中的空閑空間,包括地址字節和容量字節,所述地址字節用于表示所述寄生對象的后一個寄生對象的地址,所述容量字節用于表示所述寄生對象所標記的空閑空間的大小,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卡虛擬機從當前寄生對象的地址開始,為所述待創建對象申請空間,并對當前寄生對象的前一個寄生對象,和/或所述系統信息中存儲的所述對象堆中的第一個寄生對象的地址進行更新。
2.如權利要求1所述的方法,其特征在于,所述步驟S10,具體包括:
A1、所述Java卡虛擬機判斷當前寄生對象是否為所述對象堆中的第一個寄生對象,如果是,則返回步驟S6;否則,執行步驟A2;
A2、所述Java卡虛擬機將當前寄生對象的前一個寄生對象的地址字節的取值,更新為當前寄生對象的地址字節的取值;
A3、所述Java卡虛擬機從當前寄生對象的地址開始,為所述待創建對象申請空間,獲取申請空間后的剩余空間;
A4、所述Java卡虛擬機判斷所述剩余空間是否大于寄生對象所占用的空間,如果是,則執行步驟A5;否則,結束流程;
A5、所述Java卡虛擬機從所述剩余空間的首地址開始,創建第二寄生對象,將所述第二寄生對象的前一個寄生對象的地址字節的取值更新為所述第二寄生對象的地址,結束流程。
3.如權利要求1所述的方法,其特征在于,所述Java卡虛擬機需要從所述對象堆中刪除非寄生對象時,執行以下操作:
所述Java卡虛擬機將待刪除對象從對象表中刪除,根據所述待刪除對象的地址和所述待刪除對象所占用的空間的大小,對所述待刪除對象的前一個寄生對象和/或后一個寄生對象進行更新。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于飛天誠信科技股份有限公司,未經飛天誠信科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310537587.5/1.html,轉載請聲明來源鉆瓜專利網。





