一种Java对象创建方法、芯片及设备技术

技术编号:38738918 阅读:18 留言:0更新日期:2023-09-08 23:24
本申请提供了一种Java对象创建方法,具体的,通过扫描堆空间获取第一空闲空间标识;根据Java对象生成对象属性标识;生成第二空闲空间标识;拼接对象属性标识、Java对象和第二空闲空间标识生成Java对象的拼接数据;以第一空闲空间标识的初始地址为起始地址,写入拼接数据。该技术方案在创建Java对象的过程中,减少了写非易失性存储区的操作,可以提高Java对象的创建效率。的创建效率。的创建效率。

【技术实现步骤摘要】
一种Java对象创建方法、芯片及设备


[0001]本申请涉及安全芯片
,并且更具体地,涉及一种Java对象创建方法、芯片及设备。

技术介绍

[0002]Java卡技术作为一种操作系统的实现方法,在安全芯片如安全模块(Secure Element)和智能卡(Smart Card)中已经得到了广泛的应用。Java卡技术是一种平台无关的多应用虚拟机平台、在保证安全的前提下,可以让多个Java Applet同时运行于安全芯片之上。因此,Java卡技术特别适用于资源有限的安全芯片。
[0003]Java程序运行时,会动态创建Java对象,存储在内存中,Java卡技术也不例外。Java卡中的Java对象是默认存储在非易失性存储区的,通常是EEPROM(Electrically Erasable Programmable Read

Only Memory,带电可擦可编程只读存储器)或者Flash(Flash Memory,闪存)。由于写非易失性存储区远比中央处理器(Central Processing Unit,CPU)运行和写随机存取存储器(Random Access Memory,RAM)耗时,所以如何提高Java对象创建的效率一直是Java卡技术的重点和难点。

技术实现思路

[0004]本申请实施例提供了一种对象存储方法、芯片及设备,能够在创建Java对象时提升效率。
[0005]第一方面,提供了一种Java对象创建方法,包括:
[0006]扫描堆空间,获取第一空闲空间标识;所述第一空闲空间标识用于表明所述第一空闲空间标识的初始地址之后的堆空间为空闲空间;所述堆空间为所述非易失性存储区的一段地址连续的用于存储所述Java对象的空间;
[0007]根据所述Java对象生成对象属性标识,所述对象属性标识包括所述Java对象的大小信息;
[0008]生成第二空闲空间标识,所述第二空闲空间标识用于表明所述第二空闲空间标识的初始地址之后的堆空间为空闲空间;其中所述第一空闲空间标识和所述第二空闲空间标识的值与所述对象属性标识的值不同;
[0009]拼接所述对象属性标识、所述Java对象和所述第二空闲空间标识生成Java对象的拼接数据;
[0010]以所述第一空闲空间标识的所述初始地址为起始地址,写入所述拼接数据,使得所述拼接数据覆盖所述第一空闲空间标识。
[0011]在一种可能的实现方式中,所述扫描堆空间,获取第一空闲空间标识包括:
[0012]从所述堆空间的起始地址读取所述堆空间,根据所述对象属性标识和所述第一空闲空间标识的值来分别获取所述对象属性标识和所述第一空闲空间标识;若读取到所述对象属性标识,则根据所述对象属性标识的所述Java对象的大小信息,进行跳转,直至读取到
所述第一空闲空间标识。
[0013]在一种可能的实现方式中,在所述根据所述Java对象生成对象属性标识之前,所述方法还包括根据所述Java对象的大小信息和所述第一空闲空间标识,判断所述堆空间的空闲空间是否足够存储所述Java对象。
[0014]在一种可能的实现方式中,所述根据所述Java对象的大小信息和所述第一空闲空间标识,判断所述空闲空间是否足够存储所述Java对象包括:
[0015]获取所述第一空闲空间标识在所述堆空间中的初始地址和所述堆空间的尾部地址;
[0016]根据所述初始地址和所述尾部地址的差值获取所述堆空间的空闲空间的大小信息;
[0017]根据所述Java对象的大小信息和所述堆空间的空闲空间的大小信息,判断所述空闲空间是否足够存储所述Java对象。
[0018]在一种可能的实现方式中,在所述根据所述Java对象的大小信息和所述第一空闲空间标识,判断所述空闲空间是否足够存储所述Java对象之前,所述方法还包括:
[0019]获取所述堆空间的空闲空间的大小信息;
[0020]将所述堆空间的空闲空间的大小信息写入所述第一空闲空间标识;
[0021]所述根据所述Java对象的大小信息和所述第一空闲空间标识,判断所述空闲空间是否足够存储所述Java对象包括:根据所述第一空闲空间标识中的空闲空间的大小信息和所述Java对象的大小信息,判断所述空闲空间是否足够存储所述Java对象。
[0022]在一种可能的实现方式中,所述第二空闲空间标识的值与所述第一空闲空间标识的值相同。
[0023]在一种可能的实现方式中,空闲空间标识的值与所述非易失性存储区的初始值相同。
[0024]在一种可能的实现方式中,其特征在于,所述对象属性标识还包括区分标识,用于和所述第一空闲空间标识作区分;所述区分标识还用于查找所述对象属性标识。
[0025]在一种可能的实现方式中,在所述以所述第一空闲空间标识的初始地址为起始地址,写入所述拼接数据之前,所述方法还包括:判断所述Java对象在当前事务中是否为首次创建,若是,则将所述第一空闲空间标识的所述初始地址进行备份。
[0026]在一种可能的实现方式中,所述方法进一步包括:在发生掉电事件或者事务中止时,进行事务回滚,将所述第一空闲空间标识恢复到备份的所述初始地址
[0027]第二方面,提供了一种芯片,该芯片处理模块、接口和存储模块,所述处理模块用于调用并运行所述存储模块中存储的计算机程序,以实现第一方面的任一可能的实现方式中的方法。
[0028]在一种可能的实现方式中,该存储模块包括非易失性存储区和其他存储区;非易失性存储区用于存储该Java对象和操作系统产生的系统数据和/或应用数据;该计算机程序存储在该其他存储区中。
[0029]第三方面,提供了一种设备,该设备包括如第二方面所述的芯片。
[0030]通过本申请实施例的方案,通过扫描获取第一空闲空间标识,并根据Java对象生成对象属性标识,然后生成第二空闲空间标识,拼接该对象属性标识、Java对象和第二空闲
空间标识得到Java对象的拼接数据,并一次性将该拼接数据写入非易失性存储区中,相比于现有技术在创建Java对象时,至少存在两次写非易失性存储区的操作,提高了Java对象创建的效率;通过使得第二空闲空间标识与第一空闲空间标识的值相同,第一空闲空间标识的值与非易失性存储区的初始值相同,可以进一步降低Java对象创建的复杂度、提升Java对象创建的效率。
附图说明
[0031]图1是本申请实施例提供的一种Java对象创建的流程示意图。
[0032]图2是本申请实施例提供的一种Java对象创建的空间占用示意图。
[0033]图3是本申请实施例提供的另一种Java对象创建的流程示意性图。
[0034]图4是本申请实施例提供的另一种Java对象创建的流程示意性图。
[0035]图5是本申请实施例提供的一种芯片的结构示意图。
具体实施方式
[0036]下面将结合附图,对本申请实施例中的技术方案进行描述。本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Java对象创建方法,其特征在于,所述Java对象存储在非易失性存储区,所述方法包括:扫描堆空间,获取第一空闲空间标识;所述第一空闲空间标识用于表明所述第一空闲空间标识的初始地址之后的堆空间为空闲空间;所述堆空间为所述非易失性存储区的一段地址连续的用于存储所述Java对象的空间;根据所述Java对象生成对象属性标识,所述对象属性标识包括所述Java对象的大小信息;生成第二空闲空间标识,所述第二空闲空间标识用于表明所述第二空闲空间标识的初始地址之后的堆空间为空闲空间;其中,所述第一空闲空间标识和所述第二空闲空间标识的值与所述对象属性标识的值不同;拼接所述对象属性标识、所述Java对象和所述第二空闲空间标识生成Java对象的拼接数据;以所述第一空闲空间标识的所述初始地址为起始地址,写入所述拼接数据,使得所述拼接数据覆盖所述第一空闲空间标识。2.如权利要求1所述的方法,其特征在于,所述扫描堆空间,获取第一空闲空间标识包括:从所述堆空间的起始地址读取所述堆空间,根据所述对象属性标识和所述第一空闲空间标识的值来分别获取所述对象属性标识和所述第一空闲空间标识;若读取到所述对象属性标识,则根据所述对象属性标识的所述Java对象的大小信息,进行跳转,直至读取到所述第一空闲空间标识。3.如权利要求1或2任一项所述的方法,其特征在于,在所述根据所述Java对象生成对象属性标识之前,所述方法还包括根据所述Java对象的大小信息和所述第一空闲空间标识,判断所述空闲空间是否足够存储所述Java对象。4.如权利要求3所述的方法,其特征在于,所述根据所述Java对象的大小信息和所述第一空闲空间标识,判断所述空闲空间是否足够存储所述Java对象包括:获取所述第一空闲空间标识在所述堆空间中的初始地址和所述堆空间的尾部地址;根据所述初始地址和所述尾部地址的差值获取所述堆空间的空闲空间的大小信息;根据所述Java对象的大小信息和所述堆空间的空闲空间的大小信息,判断所述空闲空间是否足够存储所述Java对象...

【专利技术属性】
技术研发人员:李纪赛
申请(专利权)人:深圳市汇顶科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1