本發明專利技術公開了一種Java卡垃圾回收的方法,屬于信息安全領域。所述方法包括:Java卡虛擬機上電后判斷垃圾回收標志是否有效,是則執行垃圾回收操作,否則等待接收命令,當接收到命令后對命令進行解析,若所述命令為第一刪除命令且應用程序管理集中有與所述命令數據域對應的應用標識符,則執行刪除應用程序操作,若所述命令為第一刪除命令且包管理集中有與所述命令數據域對應的應用標識符,則執行刪除包操作;若所述命令為第二刪除命令,則執行刪除包及其包含的應用程序操作,若所述命令為其它命令則根據所述命令執行相應操作。該方法具有減少垃圾回收的開銷、提高垃圾回收的效率,防止在垃圾回收過程中Java卡虛擬機的異常掉電的優點。
【技術實現步驟摘要】
本專利技術涉及信息安全領域,特別涉及。
技術介紹
JAVA是純粹面向對象的編程語言,其程序以類為單位,程序運行期間會在內存中創建很多類的對象。這些對象在完成任務之后,Java卡的垃圾回收機制會自動釋放這些對象所占用的空間,使回收的內存能夠被再次利用,以提高程序的運行效率。垃圾回收能自動釋放內存空間,減輕編程負擔,但垃圾回收的一個潛在缺點是它的開銷會影響程序性能。當前的JCVM(Java卡虛擬機)規范沒有對Java卡中如何實現垃圾回收做出明確的規定,目前的智能卡中多采用mark-delete算法進行垃圾回收,運用該算法進行垃圾回收時需要對整個內存區域中的對象進行檢測,垃圾回收的效率并不高。
技術實現思路
鑒于現有技術的不足,為了避免每次進行垃圾回收時都對整個內存區域中的對象進行檢測,本專利技術提出了。本專利技術采用的技術方案如下一種Java卡垃圾回收的方法,Java卡虛擬機接收到命令后,對所述命令進行解析,當所述命令為第一刪除命令時執行步驟SI,當所述命令為第二刪除命令時執行步驟 S9,當所述命令為其它命令時根據所述命令執行相應操作步驟SI :判斷應用程序管理集中是否有與所述第一刪除命令的數據域相對應的應用標識符,是則執行步驟S2,否則執行步驟S5 ;步驟S2 :判斷所述應用標識符對應的應用程序是否滿足刪除條件,是則將垃圾回收標志位置為有效執行步驟S3,否則執行步驟S12 ;步驟S3 :查找所述應用程序的對象、子孫對象,以及查找所述應用程序的應用標識符的對象、子孫對象,回收所述應用程序的對象、子孫對象以及所述應用標識符的對象、 子孫對象在Java卡存儲區域中占用的空間,回收所述應用程序的對象、子孫對象以及所述應用標識符的對象、子孫對象的對象索弓I值在對象管理表中占用的空間;步驟S4 :若所述步驟S3中的操作成功完成,則將所述垃圾回收標志位置為無效, 執行步驟S12,若在所述Java卡虛擬機在執行上述操作過程中掉電,則重新上電后執行步驟 S12 ;步驟S5 :判斷包管理集中是否有與所述第一刪除命令的數據域相對應的應用標識符,是則執行步驟S6,否則執行步驟S12 ;步驟S6 :判斷所述應用標識符對應的包是否包含應用程序,是則執行步驟S12,否則將所述垃圾回收標志位置為有效,執行步驟S7 ;步驟S7 :查找所述包的對象、子孫對象,回收所述包的對象、子孫對象在所述Java 卡存儲區域中占用的空間,回收所述包的對象、子孫對象的對象索引值在所述對象管理表中占用的空間;步驟S8 :若所述步驟S7中的操作成功完成,則將所述垃圾回收標志位置為無效, 執行步驟S12,若在所述Java卡虛擬機在執行上述操作過程中掉電,則重新上電后執行步驟 S12 ;步驟S9 :判斷所述包包含的應用程序是否滿足刪除條件,是則將垃圾回收標志位置為有效,執行步驟S10,否則執行步驟S12 ;步驟SlO :查找所述包包含的應用程序的對象、子孫對象,以及查找所述包的應用標識符的對象、子孫對象,回收所述應用程序的對象、子孫對象以及所述應用標識符的對象、子孫對象在所述Java卡存儲區域中占用的空間,回收所述應用程序的對象、子孫對象以及所述應用標識符的對象、子孫對象的對象索引值在所述對象管理表中占用的空間,查找所述包的對象、子孫對象,回收所述包的對象、子孫對象在所述Java卡存儲區域中占用的空間,回收所述包的對象、子孫對象的對象索引值在所述對象管理表中占用的空間,回收所述應用標識符在所述包管理集中占用的空間;步驟Sll :若所述步驟SlO中的操作成功完成,則將所述垃圾回收標志位置為無效,執行步驟S12,若在所述Java卡虛擬機在執行上述操作過程中掉電,則重新上電后執行步驟S12 ;步驟S12 :判斷所述垃圾回收標志位是否有效,是則執行垃圾回收操作,否則所述 Java卡虛擬機等待接收命令,且在接收到命令后對所述命令進行解析以及根據所述命令執行相應操作。當所述Java卡虛擬機首次上電時,判斷所述垃圾回收標志位是否有效,是則執行垃圾回收操作,否則所述Java卡虛擬機等待接收命令,且在接收到命令后對所述命令進行解析以及根據所述命令執行相應操作。當垃圾回收開始接口被調用時,所述Java卡虛擬機將所述垃圾回收標志位置為有效。所述對所述命令進行解析具體包括判斷所述命令的第一字節是否為80或84,當判斷結果為是時檢測所述命令的第二字節是否為E4 ;當判斷結果為否時判定所述命令為其它命令;當所述命令的第二字節為E4時,檢測所述命令第四字節;當所述命令的第二字節不為E4時,所述Java卡虛擬機繼續等待接收命令;當所述第四字節為00時,判定所述命令為第一刪除命令;當所述第四字節為80 時,判定所述命令為第二刪除命令。所述垃圾回收操作具體包括①根據所述對象管理表中對象索引值的個數在RAM中開辟相應大小的位圖區,并將所述位圖區中所有位的值置為初始值;②根據所述對象索引值對所述Java卡存儲區域中的對象進行遍歷,并將位圖區中與能夠訪問到的對象對應的位的值置為有效值;③回收與所述位圖區中值為初始值的位相對應的對象在所述Java卡存儲區域中占用的空間;④回收與所述位圖區中值為初始值的位相對應的對象的對象索引值在所述對象管理表中占用的空間;⑤將所述垃圾回收標志位置為無效,釋放所述位圖區占用的存儲空間,判斷所述垃圾回收標志位是否有效,是則執行垃圾回收操作,否則所述Java卡虛擬機等待接收命令,且在接收到命令后對所述命令進行解析以及根據所述命令執行相應操作。所述判斷所述應用標識符對應的應用程序是否滿足刪除條件具體為判斷所述應用程序是否同時滿足①所述應用程序未生成其它包的靜態變量;②所述應用程序未在具有兩個及以上實例的同時又含有靜態變量;③所述應用程序以外的應用程序的對象數組中不包含在所述應用程序中生成的對象;當所述應用程序同時滿足上述三個條件時,所述應用程序滿足刪除條件;當所述應用程序不同時滿足上述三個條件時,所述應用程序不滿足刪除條件,所述Java卡虛擬機判斷所述垃圾回收標志是否有效。所述查找所述應用程序的對象、子孫對象的具體方法為①查找應用程序管理集,獲取所述應用程序對象的ID ;②根據所述應用程序對象的ID查找所述應用程序對象的地址;③根據所述應用程序對象的地址中的數據查找所述應用程序的對象;④查找對象管理表,獲取所述應用程序的對象的ID ;⑤根據所述應用程序的對象的ID查找所述應用程序的對象的地址;⑥根據所述應用程序的對象的地址中的數據查找所述應用程序的子孫對象。所述查找所述應用標識符的對象、子孫對象的具體方法為①查找所述應用標識符的地址;②根據所述應用標識符的地址中的數據查找所述應用標識符的對象;③查找對象管理表,獲取所述應用標識符的對象的ID ;④根據所述應用標識符的對象的ID查找所述應用標識符的對象的地址;⑤根據所述應用標識符的對象的地址中的數據查找所述應用標識符包含的子孫對象。所述查找所述包的對象、子孫對象的具體方法為①查找包管理集,獲取所述包對象的ID ;②根據所述包對象的ID查找所述包對象的地址;③根據所述包對象的地址中的數據查找所述包的對象;④查找對象管理表,獲取所述包的對象的ID ;⑤根據所述包的對象的ID查找所述包的對象的地址;⑥根據所述包t的對象的地址中的數據查找所本文檔來自技高網...
【技術保護點】
【技術特征摘要】
【專利技術屬性】
技術研發人員:陸舟,于華章,
申請(專利權)人:飛天誠信科技股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。