System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及程序加载领域,特别是涉及一种基于分段加载的程序快速启动方法、设备及存储介质。
技术介绍
1、应用程序启动速度通常和程序加载大小有紧密联系,为了让核心业务启动,通常采用多进程方案或者采用动态库方案。其中,多进程方案需要重构软件框架,实现跨进程调用;动态库方案需要将核心业务优先启动,非核心业务延后启动。
2、但是,在程序执行文件较大时,现有的程序启动方案仍然存在加载耗时导致程序启动较慢的问题。
技术实现思路
1、为了解决上述问题,本申请至少提供一种基于分段加载的程序快速启动方法、设备及存储介质。
2、本申请第一方面提供了一种基于分段加载的程序快速启动方法,方法包括:获取待启动程序的优先加载业务对应的静态执行文件和静态执行文件对应的对外函数信息;其中,对外函数信息包括延迟加载业务对应的函数的信息;执行静态执行文件,并利用对外函数信息将延迟加载业务对应的函数注册至共用动态库;获取延迟加载业务对应的动态库,得到延迟动态库;执行延迟动态库,并调用共用动态库中已注册的函数,完成待启动程序的快速启动。
3、在一实施例中,在获取待启动程序的优先加载业务对应的静态执行文件和静态执行文件对应的对外函数信息之前,还包括:获取初始化执行文件;执行初始化执行文件,以对待启动程序进行启动初始化处理。
4、在一实施例中,启动第一进程和第二进程,第一进程用于执行初始化执行文件;第二进程用于执行静态执行文件、共用动态库和延迟动态库。
5、在一实施例
6、在一实施例中,获取延迟加载业务对应的动态库,得到延迟动态库,包括:检测第二文件系统是否挂载成功;响应于第二文件系统挂载成功,获取第二文件系统中存储的延迟加载业务对应的动态库,得到延迟动态库。
7、在一实施例中,执行延迟动态库,并调用共用动态库中已注册的函数,包括:获取延迟动态库中待调用的函数名称;从共用动态库中查找待调用的函数名称对应的函数;响应于待调用的函数名称查找成功,调用共用动态库中待调用的函数名称对应的函数。
8、在一实施例中,获取待启动程序的优先加载业务对应的静态执行文件,包括:确定待启动程序的优先加载业务;获取每个优先加载业务关联的依赖静态库;结合每个优先加载业务关联的依赖静态库,生成待启动程序对应的静态执行文件。
9、在一实施例中,获取延迟加载业务对应的动态库,得到延迟动态库,包括:获取待启动程序对应的原始静态库文件;基于原始静态库文件对应的所有函数,生成程序函数集合;基于对外函数信息对应的所有函数,生成有效函数集合;利用程序函数集合与有效函数集合之间的差异函数,得到差异函数集合;对有效函数集合中的所有函数进行链接,对差异函数集合中的所有函数不进行链接,生成延迟动态库。
10、本申请第二方面提供了一种基于分段加载的程序快速启动装置,装置包括:优先文件获取模块,用于获取待启动程序的优先加载业务对应的静态执行文件和静态执行文件对应的对外函数信息;其中,对外函数信息包括延迟加载业务对应的函数的信息;优先文件执行模块,用于执行静态执行文件,并利用对外函数信息将延迟加载业务对应的函数注册至共用动态库;延迟文件获取模块,用于获取延迟加载业务对应的动态库,得到延迟动态库;延迟文件执行模块,用于执行延迟动态库,并调用共用动态库中已注册的函数,完成待启动程序的快速启动。
11、本申请第三方面提供了一种电子设备,包括存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现上述基于分段加载的程序快速启动方法。
12、本申请第四方面提供了一种计算机可读存储介质,其上存储有程序指令,程序指令被处理器执行时实现上述基于分段加载的程序快速启动方法。
13、上述方案,通过获取待启动程序的优先加载业务对应的静态执行文件和静态执行文件对应的对外函数信息;其中,对外函数信息包括延迟加载业务对应的函数的信息;执行静态执行文件,并利用对外函数信息将延迟加载业务对应的函数注册至共用动态库;获取延迟加载业务对应的动态库,得到延迟动态库;执行延迟动态库,并调用共用动态库中已注册的函数,完成待启动程序的快速启动,从而在执行延迟动态库时可以调用共用动态库中已注册的函数,使得延迟加载阶段的动态库函数符号量和优先加载阶段的静态链接函数符号量一致,在保证优先加载业务可以快速加载执行的前提下,减少存储资源的占用,节省程序加载时间。
14、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请。
本文档来自技高网...【技术保护点】
1.一种基于分段加载的程序快速启动方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在所述获取待启动程序的优先加载业务对应的静态执行文件和所述静态执行文件对应的对外函数信息之前,还包括:
3.根据权利要求2所述的方法,其特征在于,启动第一进程和第二进程,所述第一进程用于执行所述初始化执行文件;所述第二进程用于执行所述静态执行文件、所述共用动态库和所述延迟动态库。
4.根据权利要求2所述的方法,其特征在于,所述初始化执行文件、所述静态执行文件和所述共用动态库存储于第一文件系统内,所述延迟动态库存储于第二文件系统内;其中,所述第一文件系统的数据解压速率大于所述第二文件系统。
5.根据权利要求4所述的方法,其特征在于,所述获取所述延迟加载业务对应的动态库,得到延迟动态库,包括:
6.根据权利要求1至5任一项所述的方法,其特征在于,所述执行所述延迟动态库,并调用所述共用动态库中已注册的函数,包括:
7.根据权利要求1至5任一项所述的方法,其特征在于,获取待启动程序的优先加载业务对应的静态执行文件,包
8.根据权利要求1至5任一项所述的方法,其特征在于,所述获取所述延迟加载业务对应的动态库,得到延迟动态库,包括:
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现如权利要求1-8任一项所述方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序指令,所述程序指令能够被处理器执行以实现如权利要求1-8任一项所述方法中的步骤。
...【技术特征摘要】
1.一种基于分段加载的程序快速启动方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在所述获取待启动程序的优先加载业务对应的静态执行文件和所述静态执行文件对应的对外函数信息之前,还包括:
3.根据权利要求2所述的方法,其特征在于,启动第一进程和第二进程,所述第一进程用于执行所述初始化执行文件;所述第二进程用于执行所述静态执行文件、所述共用动态库和所述延迟动态库。
4.根据权利要求2所述的方法,其特征在于,所述初始化执行文件、所述静态执行文件和所述共用动态库存储于第一文件系统内,所述延迟动态库存储于第二文件系统内;其中,所述第一文件系统的数据解压速率大于所述第二文件系统。
5.根据权利要求4所述的方法,其特征在于,所述获取所述延迟加载业务对应的动态库,得...
【专利技术属性】
技术研发人员:王正学,郑攀,宣烈烽,
申请(专利权)人:杭州华橙软件技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。