[發明專利]一種基于java卡虛擬機中對象管理的方法有效
| 申請號: | 201310031158.0 | 申請日: | 2013-01-28 |
| 公開(公告)號: | CN103116518A | 公開(公告)日: | 2013-05-22 |
| 發明(設計)人: | 陸舟;于華章 | 申請(專利權)人: | 飛天誠信科技股份有限公司 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455;G06F12/02 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100085 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 java 虛擬機 對象 管理 方法 | ||
技術領域
本發明涉及對象管理領域,尤其涉及一種基于java卡虛擬機中對象管理的方法。
背景技術
Java卡中使用對象來保存一些數據,對象包括對象頭和數據域,對象頭和數據域可以分開存儲,也可以連續存儲。永久性對象的對象頭和數據域順序排列的存儲在EEPROM中;臨時對象的對象頭和數據域是分開存儲的,其中對象頭在EEPROM中,而數據域在RAM中。永久性對象和臨時對象的對象頭在eeprom中按創建的先后順序排列。
現有技術中,對象每次被調用時,都需要引用該對象的地址,占用較大的空間;且在進行垃圾回收時,如果移動了一個對象,則該對象的偏移地址就會改變,相應的就需要把每個引用該對象的偏移地址改一遍。現有技術中對象管理較繁瑣,而且浪費資源和時間。
發明內容
本發明的目的是為了克服現有技術的不足,提供一種基于java卡虛擬機中對象管理的方法。
本發明提供一種基于java卡虛擬機中對象管理的方法,包括:
步驟S1:java卡虛擬機在java卡程序運行過程中檢測將要進行的操作,如是進行創建對象操作,則執行步驟S2;如是進行刪除CAP鏡像操作則執行步驟S7;
步驟S2:所述java卡虛擬機在第二存儲空間中申請將要創建對象的空間,填入所述將要創建對象的基本信息,獲得所述將要創建對象的偏移地址;
步驟S3:所述java卡虛擬機判斷子對象表中是否有空表項,是則將所述空表項所在子對象表作為當前子對象表,執行步驟S6,否則執行步驟S4;
步驟S4:所述java卡虛擬機判斷主對象表中是否有空表項,是則執行步驟S5,否則報錯,返回步驟S1;
步驟S5:所述java卡虛擬機根據子對象表的長度從第一存儲空間中申請空間建立新子對象表,并獲取所述新子對象表的偏移地址,將所述新子對象表的偏移地址存儲到所述主對象表的空表項中,將所述新子對象表作為當前子對象表并獲取其第一個空表項,執行步驟S6;
步驟S6:java卡虛擬機將所述將要創建對象的偏移地址存儲到當前子對象表的空表項中,計算所述將要創建對象的索引值并將其存儲到操作棧中,并用所述將要創建對象的索引值更新存儲的第一索引值,返回步驟S1;
步驟S7:所述java卡虛擬機將所述第一存儲空間中的與刪除CAP鏡像ID對應的CAP鏡像標記為碎片,獲取所述第一存儲空間中的地址最大的組件作為當前組件;
步驟S8:所述java卡虛擬機將所述第一存儲空間中最高地址與當前組件地址之間的碎片大小加到第一存儲空間的總碎片大小上,檢測當前組件的類型,如為子對象表則執行步驟S9,如為CAP鏡像則執行步驟S10;所述第一存儲空間的總碎片大小初始值為0;
步驟S9:所述java卡虛擬機在所述第一存儲空間中將所述子對象表向高地址方向移動所述第一存儲空間的總碎片大小,修改存儲在主對象表中所述子對象表的偏移地址,執行步驟S11;
步驟S10:所述java卡虛擬機在所述第一存儲空間中將所述CAP鏡像向高地址方向移動所述第一存儲空間的總碎片大小,更新所述CAP鏡像的地址,執行步驟S11;
步驟S11:所述java卡虛擬機判斷在所述第一存儲空間中是否存在地址較小的當前組件的相鄰組件,是則將所述相鄰組件作為當前組件,返回步驟S8,否則返回步驟S1。
進一步地,所述步驟S1中當所述java卡虛擬機在運行過程中檢測將要進行垃圾回收操作時執行步驟S12;當所述java卡虛擬機在運行過程中檢測將要進行修改對象操作時執行步驟S17;
步驟S12:所述java卡虛擬機掃描所述第二存儲空間,合并碎片,判斷是否有需要回收的對象,是則執行步驟S13,否則執行步驟S15;
步驟S13:所述java卡虛擬機將需要回收對象的大小加到第二存儲空間的總碎片大小上,清空所述子對象表中存儲所述需要回收對象的偏移地址的表項;所述第二存儲空間的總碎片大小初始值為0;
步驟S14:所述java卡虛擬機判斷所述需要回收對象的索引值是否小于存儲的第一索引值,是則用所述需要回收對象的索引值更新所述第一索引值,返回步驟S12,否則返回步驟S12;
步驟S15:所述java卡虛擬機判斷所述第二存儲空間的總碎片大小是否為0,是則返回步驟S1,否則執行步驟S16;
步驟S16:所述java卡虛擬機根據所述第二存儲空間的總碎片大小移動需要回收對象之后的對像,并更新所述子對象表中存儲的移動對像的偏移地址,返回步驟S1;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于飛天誠信科技股份有限公司,未經飛天誠信科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310031158.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種充電轉接頭
- 下一篇:具有滅弧速斷結構的高壓跌落式熔斷器





