程序启动所需资源创建方法、存储介质、设备及方法技术

技术编号:20328980 阅读:15 留言:0更新日期:2019-02-13 05:39
本发明专利技术涉及计算机软件领域,公开了一种程序启动所需资源创建方法、存储介质、设备及方法,该方法包括S1:初始化分配对象内存空间接口和内存地址的调用构造函数接口;S2:在内存的全局静态存储区中申请一内存空间;S3:对申请的内存空间进行字节对齐设置并形成连续存储空间;S4:程序启动时,根据当前需使用对象的运行状态,判断当前需使用对象是否已被创建,若否,则转到S5,若是,则获取该对象的指针;S5:判断当前需使用对象是否正在创建中,若是,则等待该对象创建完成,若否,则在申请的内存空间中创建当前需使用对象。本发明专利技术能够有效减少对象创建时对内存的重复申请及内存碎片的产生,提升程序启动速度。

【技术实现步骤摘要】
程序启动所需资源创建方法、存储介质、设备及方法
本专利技术涉及计算机软件领域,具体涉及一种程序启动所需资源创建方法、存储介质、设备及方法。
技术介绍
Windows、iOS、Android等操作系统中的程序在启动的过程中,通常会创建多种对象资源以进行程序启动时的初始化工作,但此时创建的对象均在堆内存中,极易形成堆的内存碎片,进而影响程序的启动速度和对相应接口的访问速度,同时,有一部分不需要被立刻使用的对象也会被创建,从而造成对象资源的使用浪费,影响程序的运行性能,进一步地降低程序的启动速度。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种程序启动所需资源创建方法,有效减少对象创建时对内存的重复申请及内存碎片的产生,提升程序启动速度,本专利技术还提供一种序启动所需资源创建系统,能够减少内存空间重复申请,有效提升程序启动速度。为达到以上目的,本专利技术采取的技术方案是,包括:S1:初始化分配对象内存空间接口和内存地址的调用构造函数接口;S2:通过分配对象内存空间接口,在内存的全局静态存储区中申请一内存空间;S3:使用编译器对申请的内存空间进行字节对齐设置并形成连续存储空间;S4:程序启动时,根据当前需使用对象的运行状态,判断当前需使用对象是否已被创建,若否,则转到S5,若是,则获取该对象的指针;S5:判断当前需使用对象是否正在创建中,若是,则等待该对象创建完成,并获取该对象的指针,若否,则调用内存地址的调用构造函数在申请的内存空间中创建当前需使用对象,并获取创建的对象的指针。在上述技术方案的基础上,S3中,申请的内存空间按照32字节对齐形式进行设置。在上述技术方案的基础上,所述已被创建和正在创建中的对象均位于在全局静态存储区申请的内存空间。在上述技术方案的基础上,根据对象的访问接口状态信息判断所述对象的运行状态;所述访问接口状态信息由变量标志标识;所述变量标志包括未创建、创建中和创建完成。在上述技术方案的基础上,S5中,在当前需使用对象正在创建中时,则通过线程让步函数yieldCurrentThread等待当前需使用对象的创建完成。本专利技术还提供一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。本专利技术还提供一种程序启动所需资源创建设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的方法。本专利技术还提供一种程序启动所需资源创建系统,其特征在于,包括:初始化模块,其用于初始化分配对象内存空间接口和内存地址的调用构造函数接口;获取模块,其用于通过分配对象内存空间接口,在内存的全局静态存储区中申请一内存空间,同时,使用编译器对申请的内存空间进行字节对齐设置并形成连续存储空间;判断模块,其用于当程序启动时,判断当前需使用对象的运行状态;执行模块,其用于基于判断模块的判断结果,若当前需使用对象已被创建,则获取该对象的指针,若当前需使用对象正在创建中,则等待该对象创建完成,并获取该对象的指针,若当前需使用对象未创建,则调用内存地址的调用构造函数在申请的内存空间中创建当前需使用对象,并获取创建的对象的指针。在上述技术方案的基础上,所述获取模块还用于对申请的内存按照32字节对齐形式进行设置。在上述技术方案的基础上,在当前需使用对象正在创建中时,则通过线程让步函数yieldCurrentThread等待当前需使用对象的创建完成。与现有技术相比,本专利技术的优点在于:在程序的编译期间,即在内存的全局静态存储区预先为对象的创建申请一内存空间,且后续对象的创建均在申请的内存空间中完成,避免程序启动创建对象时重复的进行内存的申请,间接减少程序的启动时间,同时,当对象需要时,判断当前需使用对象是否已经被创建,若已创建,则直接使用,若未创建,则等待创建完成或直接创建,从而到达对象资源的重复使用效果,避免重复创建对象的时间消耗,达到对程序启动速度提升的目的。附图说明图1为本专利技术一种程序启动所需资源创建方法的流程图;图2为本专利技术一种程序启动所需资源创建设备的结构示意图。具体实施方式以下结合附图及实施例对本专利技术作进一步详细说明。参见图1所示,本专利技术实施例提供一种程序启动所需资源创建方法,用于对Windows、iOS、Android等操作系统中程序启动时所需对象的创建,本专利技术实施例的程序启动所需资源创建方法适用于程序启动时所有对象的创建,例如foo对象的创建,foo是对象资源中的一常用函数名。本专利技术的程序启动所需资源创建方法具体包括:S1:初始化分配对象内存空间接口和内存地址的调用构造函数接口。通过此步骤,可以阻止对象自动执行静态初始化操作,从而方便后续更好的控制当前需使用对象的自定义创建过程。S2:通过分配对象内存空间接口,在内存的全局静态存储区中申请一内存空间。所申请的内存空间大小根据程序运行时所需对象的实际创建量进行灵活选择。通过在全局静态存储区中预先申请一块内存空间,因为静态存储区的内存是在程序编译期间就已分配完成的,此时在程序启动之前预先在全局静态存储区中预先申请一内存,使得程序在启动的过程中便不需要再次重新申请内存,从而有效地减少程序启动过程中对象内存的申请数量。S3:使用编译器对申请的内存空间进行字节对齐设置并形成连续存储空间。优选地,将申请的内存空间按照32字节对齐形式进行设置,同时使设置后的内存空间符合POD特性,即设置后的内存空间为一段连续的存储空间。通过对申请的内存空间进行相应设置,可以有效减少堆的内存碎片,保证后续对象静态初始化的安全有效,有效提升创建的对象实例的性能。在内存中,一般是按照8个字节一格的对齐排列形式布置,32字节对齐形式即为32个字节一格的排列方式,具体的是利用编译器的内部指令__declspec(align(Foo)),__alignof(Foo)对申请的内存按照32字节对齐形式进行设置。通过上述过程,即已经对对象创建时所需的内存空间进行了优化,从而有效地减少程序启动时申请大量内存所消耗的时间,有效地提升了程序的启动速度。S4:程序启动时,根据当前需使用对象的运行状态,判断当前需使用对象是否已被创建,若否,则转到S5,若是,则获取该对象的指针,此时对象的创建速度和性能为最优情况。程序启动时,即对程序启动所需的对象的运行状态进行判断,判断当前所需对象是否已被创建,避免重复创建对象,从而节约对象创建时间,进一步提高程序的启动速度。S5:判断当前需使用对象是否正在创建中,若是,则等待该对象创建完成,并获取该对象的指针,此时对象的创建速度和性能次之,若否,则调用内存地址的调用构造函数在申请的内存空间中创建当前需使用对象,并获取创建的对象的指针。程序启动时所需的对象为多个,因此需要对所需的对象进行依次单个判断,并进行相应的等待、创建或使用等操作。在当前需使用对象还未被创建时,通过原子操作_InterlockedCompareExchange来快速的判断当前需使用对象是否正在创建中,若当前需使用对象正在创建中时,则通过线程让步函数yieldCurrentThread等待当前需使用对象的创建完成。对象的指针均通过instance函数进行获取。已被创建和正在创建中的对象均位于在全局静态存储区申请的内存空间,即已被创建、本文档来自技高网...

【技术保护点】
1.一种程序启动所需资源创建方法,其特征在于,包括:S1:初始化分配对象内存空间接口和内存地址的调用构造函数接口;S2:通过分配对象内存空间接口,在内存的全局静态存储区中申请一内存空间;S3:使用编译器对申请的内存空间进行字节对齐设置并形成连续存储空间;S4:程序启动时,根据当前需使用对象的运行状态,判断当前需使用对象是否已被创建,若否,则转到S5,若是,则获取该对象的指针;S5:判断当前需使用对象是否正在创建中,若是,则等待该对象创建完成,并获取该对象的指针,若否,则调用内存地址的调用构造函数在申请的内存空间中创建当前需使用对象,并获取创建的对象的指针。

【技术特征摘要】
1.一种程序启动所需资源创建方法,其特征在于,包括:S1:初始化分配对象内存空间接口和内存地址的调用构造函数接口;S2:通过分配对象内存空间接口,在内存的全局静态存储区中申请一内存空间;S3:使用编译器对申请的内存空间进行字节对齐设置并形成连续存储空间;S4:程序启动时,根据当前需使用对象的运行状态,判断当前需使用对象是否已被创建,若否,则转到S5,若是,则获取该对象的指针;S5:判断当前需使用对象是否正在创建中,若是,则等待该对象创建完成,并获取该对象的指针,若否,则调用内存地址的调用构造函数在申请的内存空间中创建当前需使用对象,并获取创建的对象的指针。2.如权利要求1所述的一种程序启动所需资源创建方法,其特征在于:S3中,申请的内存空间按照32字节对齐形式进行设置。3.如权利要求1所述的一种程序启动所需资源创建方法,其特征在于:所述已被创建和正在创建中的对象均位于在全局静态存储区申请的内存空间。4.如权利要求1所述的一种程序启动所需资源创建方法,其特征在于:根据对象的访问接口状态信息判断所述对象的运行状态;所述访问接口状态信息由变量标志标识;所述变量标志包括未创建、创建中和创建完成。5.如权利要求1所述的一种程序启动所需资源创建方法,其特征在于:S5中,在当前需使用对象正在创建中时,则通过线程让步函数yieldCurrentThread等待当前需使用对象的创建完成。6.一种存...

【专利技术属性】
技术研发人员:黄浩陈少杰张文明
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

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

1