[發明專利]一種可進行高效對象管理的方法及裝置有效
| 申請號: | 201410174222.5 | 申請日: | 2014-04-28 |
| 公開(公告)號: | CN103955395B | 公開(公告)日: | 2017-02-22 |
| 發明(設計)人: | 陸舟;于華章 | 申請(專利權)人: | 飛天誠信科技股份有限公司 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100085 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 進行 高效 對象 管理 方法 裝置 | ||
技術領域
本發明涉及java卡技術領域,尤其涉及一種可進行高效對象管理的方法及裝置。?
背景技術
java卡中使用對象來保存一些數據,對象包括對象頭和數據域,對象頭和數據域可以分開存儲,也可以連續存儲。永久性對象的對象頭和數據域順序排列的存儲在EEPROM中;臨時對象的對象頭和數據域是分開存儲的,其中對象頭存儲在EEPROM中,而數據域存儲在RAM中。永久性對象和臨時對象的對象頭在EEPROM中按創建的先后順序排列。java卡運行時需要創建新對象,然后對這些對象進行管理。?
目前,java卡虛擬機中基于對象表的對象管理方法中,java卡虛擬機中包括子對象表和主對象表,其中子對象表的表項中存儲對象的偏移地址,主對象表的表項中存儲子對象表的偏移地址,在對對象進行操作時,首先根據對象的主對象表索引值在主對象表中查找對應的子對象表的偏移地址,再根據對象的子對象表索引值在子對象表中查找對象的偏移地址,根據查找到的對象的偏移地址計算對象的絕對地址,之后再對象進行操作;在垃圾回收過程中,也需要根據被回收對象的主對象表索引值在主對象表中查找對應的子對象表的偏移地址,再根據被回收對象的子對象表索引值在子對象表中查找被回收對象的偏移地址,將查找到的偏移地址清空。因此,java卡虛擬機中基于對象表的對象管理方法中,java卡虛擬機需要進行兩次查表操作,操作流程復雜,效率低,耗時多。?
發明內容
本發明的目的是為了克服現有技術的不足,提供一種可進行高效對象管理的方法及裝置,在對對象進行操作時不需查找子對象表和主對象表,簡化了java卡虛擬機的操作流程,提高java卡虛擬機工作效率。?
本發明提供的一種可進行高效對象管理的方法,包括:?
步驟S1:java卡虛擬機接收來自當前應用程序的指令,判斷所述指令的類型,若是創建對象指令則執行步驟S2,若是修改對象指令則執行步驟S5;?
步驟S2:所述java卡虛擬機根據所述創建對象指令獲取與所述當前應用程序對應的應用實例的偏移地址,將所述偏移地址上的應用實例作為當前應用實例,根據所述創建對象指令獲取對象大小、對象類型和對象地址位置;?
步驟S3:所述java卡虛擬機從系統信息中獲取對象堆的剩余空間的起始偏移地址;?
步驟S4:所述java卡虛擬機將所述對象堆的剩余空間的起始偏移地址作為創建的對象的偏移地址,按照所述對象大小和所述對象類型創建對象,根據所述對象大小更新所述系統信息中的所述對象堆的剩余空間的起始偏移地址,根據當前應用實例的偏移地址將所述創建的對象的偏移地址存入到當前應用實例中與所述對象地址位置對應的位置中,返回步驟S1;?
步驟S5:所述java卡虛擬機根據所述修改對象指令獲取對象地址位置,根據所述對象地址位置從當前應用實例中獲取對象偏移地址,根據所述修改對象指令獲取修改位置和修改內容;?
步驟S6:所述java卡虛擬機根據所述對象偏移地址和所述修改位置,將所述對象偏移地址上的對象中所述修改位置上的數據修改為所述修改內容,返回步驟S1。?
所述步驟S1之前還包括:所述java卡虛擬機接收用戶發送的選擇應用指令,根據所述選擇應用指令獲取應用ID,根據所述應用ID查找對應的應用程序,并判斷是否查找到與所述應用ID對應的應用程序,是則將查找到的所述應用程序作為當前應用程序,執行步驟S1,否則提示錯誤,結束。?
所述步驟S2具體為:所述java卡虛擬機對所述創建對象指令進行編譯,得到第一編譯指令,根據所述第一編譯指令獲取與所述當前應用程序對應的應用實例的偏移地址,將所述偏移地址上的應用實例作為當前應用實例,根據所述第一編譯指令獲取對象大小、對象類型和對象地址位置。?
所述步驟S2中根據所述創建對象指令獲取對象大小為:所述java卡虛擬機從所述創建對象指令中獲取所述對象大小。?
所述步驟S2中根據所述創建對象指令獲取對象大小為:所述java卡虛擬機從所述創建對象指令中獲取存儲區的偏移地址和數據在存儲區中的位置,根據所述存儲區的偏移地址,在存儲區中根據所述數據在存儲區中的位置獲取數據,將獲取到的數據作為所述對象大小。?
所述步驟S3與步驟S4之間包括:所述java卡虛擬機從所述系統信息中獲取對象堆大小,根據所述對象堆大小和所述對象堆的剩余空間的起始偏移地址得到對象堆的剩余空間大小,判斷所述對象堆的剩余空間大小是否大于所述對象大小,是則執行步驟S4,否則提示錯誤,返回步驟S1。?
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于飛天誠信科技股份有限公司,未經飛天誠信科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410174222.5/2.html,轉載請聲明來源鉆瓜專利網。





