一种数据对象的初始化方法、装置、电子设备制造方法及图纸

技术编号:39139089 阅读:11 留言:0更新日期:2023-10-23 14:54
本申请实施例提供了一种数据对象的初始化方法、装置、电子设备及存储介质。该方法包括:根据初始化需求获取预设的对象构造函数;并响应于对象构造函数单次调用对象指针的操作,通过遍历数据对象中的成员变量,根据对象指针的值确定成员变量的地址信息;其中,数据对象包括至少两个成员变量,对象指针用于对数据对象中的成员变量进行访问;根据对象构造函数,以及每个成员变量的地址信息,对每个成员变量进行初始化操作。通过单次轮询遍历与指针调用一次性确定成员变量的初始化存储地址。减少了对多个成员变量进行初始化时反复调用对象指针时,重复加载对系统性能的影响。重复加载对系统性能的影响。重复加载对系统性能的影响。

【技术实现步骤摘要】
一种数据对象的初始化方法、装置、电子设备


[0001]本申请涉及虚拟机编译器
,特别涉及一种数据对象的初始化方法、装置、电子设备。

技术介绍

[0002]对象是编程领域中一种常见的数据结构,开发人员可以根据实际的开发需要,将对象定义为具体的数据变量或是函数。无论何种形式,在程序中使用对象都需要在编译阶段对其进行初始化。
[0003]相关技术中,在对对象中的成员变量进行初始化时,需先获取该成员变量所在数据对象的起始地址,然后再计算其所在数据对象中的偏移地址,最终确定其最终存储地址后,经由赋值完成初始化。
[0004]但现有技术方案里,在一个数据对象同时包含多个的成员变量的情况下,每对一个成员变量进行初始化操作时都需要调用指向该数据对象的对象指针。随着成员数量的增加,初始化对于指针的重复加载将严重影响系统的运行性能。

技术实现思路

[0005]本申请实施例提供一种数据对象的初始化方法、装置,以解决现有技术方案中,对于对象中的多个成员变量进行初始化时重复调用对象指针,影响系统运行性能的问题。
[0006]第一方面,本申请实施例提供了一种数据对象的初始化方法,所述方法包括:
[0007]获取虚拟机中预设的对象构造函数,所述对象构造函数用于在创建数据对象时,对所述数据对象中的成员变量进行初始化;
[0008]根据所述对象构造函数的特征类型,响应于所述对象构造函数单次调用对象指针的操作,通过遍历所述数据对象中的成员变量,分别确定所述成员变量各自对应的地址信息;其中,所述数据对象包括至少两个成员变量,所述对象指针用于对所述数据对象中的成员变量进行访问;
[0009]根据所述对象构造函数,以及每个所述成员变量各自对应的地址信息,对每个所述成员变量分别进行初始化操作。
[0010]第二方面,本申请实施例提供了一种数据对象的初始化装置,所述装置包括:
[0011]获取模块,用于获取虚拟机中预设的对象构造函数,所述对象构造函数用于在创建数据对象时,对所述数据对象中的成员变量进行初始化;
[0012]遍历模块,用于根据所述对象构造函数的特征类型,响应于所述对象构造函数单次调用对象指针的操作,通过遍历所述数据对象中的成员变量,分别确定所述成员变量各自对应的地址信息;其中,所述数据对象包括至少两个成员变量,所述对象指针用于对所述数据对象中的成员变量进行访问;
[0013]初始化执行模块,用于根据所述对象构造函数,以及每个所述成员变量各自对应的地址信息,对每个所述成员变量分别进行初始化操作。
[0014]第三方面,本申请实施例提供了一种电子设备,包括:处理器;
[0015]用于存储所述处理器可执行指令的存储器;
[0016]其中,所述处理器被配置为执行所述指令,以实现所述的方法。
[0017]第四方面,本申请实施例提供了一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行所述方法。
[0018]在本申请实施例中,根据初始化需求获取预设的对象构造函数;并响应于对象构造函数单次调用对象指针的操作,通过遍历数据对象中的成员变量,根据对象指针的值确定成员变量的地址信息;其中,数据对象包括至少两个成员变量,对象指针用于对数据对象中的成员变量进行访问;根据对象构造函数,以及每个成员变量的地址信息,对每个成员变量进行初始化操作。通过单次轮询遍历与指针调用一次性确定所有成员变量的初始化存储地址,并在此基础上进行初始化操作,减少了对多个成员变量进行初始化时反复调用对象指针时,重复加载对系统性能的影响。
附图说明
[0019]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。在附图中:
[0020]图1是本申请实施例提供的种数据对象初始化方法的简单实施步骤流图;
[0021]图2是本申请实施例提供的一种虚拟机处理对象构造函数执行流程图;
[0022]图3是本申请实施例提供的一种数据对象初始化方法的详细实施步骤流程图;
[0023]图4是本申请实施例提供的一种字节码生成结果界面图;
[0024]图5是本申请实施例提供的一种优化对象构造函数初始化成员流程示意图;
[0025]图6是本申请实施例提供的一种优化调用空构造函数的效果示意图;
[0026]图7是本申请实施例提供的一种优化构造函数重复加载对象指针的效果展示图;
[0027]图8是本申请实施例提供的一种数据对象的初始化装置的功能模块组成示意图
[0028]图9是本申请实施例提供的一种电子设备的功能组件关系图;
[0029]图10是本申请实施例提供的另一种电子设备的功能组件关系图。
具体实施方式
[0030]下面将参照附图更详细地描述本申请的示例性实施例。
[0031]参照图1,图1是本申请实施例提供的一种数据对象初始化方法的简单实施步骤流图。如图1所示,所述方法的步骤包括:
[0032]步骤101:获取虚拟机中预设的对象构造函数,所述对象构造函数用于在创建数据对象时,对所述数据对象中的成员变量进行初始化。
[0033]对象构造函数,是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋初始值。
[0034]本申请实施例所提供的一种数据对象的初始化方法,主要针对虚拟机JIT编译器所编译的对象构造函数的调用。对JIT编译器而言,面向数据对象的编程语言的源码是第一次预编译生成的中间字节码(或称为中间代码\中间语言IL,Intermediate Language)的格式文件。中间字节码文件作为编译的中间产物,经过JIT编译器进一步编译后即可获得可被
计算机中央处理器直接执行的机器码指令序列。
[0035]在实际应用中,开发人员可根据变成需要自定义构造函数的具体类型及调用关系,如果预先没有定义则编译器会在执行编译时自动生成一个,创建自定义类的对象时由JIT编译器自动调用。
[0036]在虚拟机编译器内部的importer阶段,即:将对象构造函数中的字节码转换为语法树阶段,对所有函数调用字节码信息处理转换过程中,可以根据函数名称,将对象构造函数与一般函数进行识别区分出来。函数名的字符编码规则以及对象构造函数名称,不同虚拟机都有其对应标准规范进行了规范约束,其中对象构造函数名一般都是特定后缀关键字,具体规则可以依据对应虚拟机的标准规范进行确定。比如:C#语言虚拟机的标准规范《ECMA

335》规定,对象构造函数名称都有“.ctor”关键字结尾。
[0037]步骤102:根据所述对象构造函数的特征类型,响应于所述对象构造函数单次调用对象指针的操作,通过遍历所述数据对象中的成员变量,分别确定所述成员变量各自对应的地址信息;其中,所述数据对象包括至少两个成员变量,所述对象指针用于对所述数据对象中的成员变量进行访问。
[0038]面向对象本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据对象的初始化方法,其特征在于,所述方法包括:获取虚拟机中预设的对象构造函数;所述对象构造函数用于在创建数据对象时,对所述数据对象中的成员变量进行初始化;根据所述对象构造函数的特征类型,响应于所述对象构造函数单次调用对象指针的操作,通过遍历所述数据对象中的成员变量,分别确定所述成员变量各自对应的地址信息;其中,所述数据对象包括至少两个成员变量,所述对象指针用于对所述数据对象中的成员变量进行访问;根据所述对象构造函数,以及每个所述成员变量各自对应的地址信息,对每个所述成员变量分别进行初始化操作。2.根据权利要求1所述的方法,其特征在于,所述分别确定所述成员变量各自对应的地址信息,包括:建立所述数据对象的初始化列表;分别确定遍历的所述成员变量各自相较于所述数据对象的地址偏移量,并将每个与所述成员变量对应的地址偏移量保存至所述初始化列表中;响应于对所述初始化列表的遍历操作,加载所述对象指针,并根据所述地址偏移量与所述对象指针的值,依次确定所述地址信息,所述地址信息用于表征所述成员变量的实际存储地址。3.根据权利要求2所述的方法,其特征在于,所述初始化列表包括用于存储所述对象指针的第一节点;所述加载所述对象指针,并根据所述地址偏移量与所述对象指针的值,依次确定所述地址信息,包括:从所述第一节点中获取所述对象指针;在遍历所述成员变量的过程中,将所述对象指针的值与所述成员变量各自对应的地址偏移量的加和运算结果分别作为所述成员变量的地址信息。4.根据权利要求3所述的方法,其特征在于,所述初始化列表还包括用于存储成员链表的第二节点,所述成员链表用于表征所述成员变量的链式连接关系;所述方法还包括:在遍历过程中,针对遍历的所述成员变量,根据所述第二节点,将所述成员变量分别追加链接至所述成员链表的尾部,并将所述第一节点中已存储的所述对象指针的值,与所述成员变量各自对应的地址偏移量的加和运算结果分别作为所述成员变量的地址信息。5.根据权利要求1所述的方法,其特征在于,所述对每个所述成员变量分别进行初始化操作,包括:根据所述成员变量的类型标志符,确定所述成员变量的变量类型;根据所述变量类型,获取所述成员变量的初始变量值;依照所述地址信息,将所述成员变量的初始变量值分别存储至与所述地址信息对应的存储空间。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取所述...

【专利技术属性】
技术研发人员:乔鹏程
申请(专利权)人:龙芯中科合肥技术有限公司
类型:发明
国别省市:

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

1