程序启动方法、类间关系构建方法及装置、移动终端与流程

文档序号:24418691发布日期:2021-03-26 21:40阅读:41来源:国知局
程序启动方法、类间关系构建方法及装置、移动终端与流程

1.本申请涉及计算机技术中的软件技术,尤其涉及一种程序启动方法、类间关系构建方法及装置、移动终端。


背景技术:

2.目前,移动终端中可以设置多种形式的程序,比如,可以设置手机软件,还可以设置小程序平台,移动终端通过小程序平台可以访问其中的小程序。
3.可以从多个维度评价一款程序的优劣,其中,启动速度是一项重要的衡量指标,启动速度对用户的使用感受也有着比较重要的影响。
4.若程序启动过程中出现卡顿、长时间等待,则会影响用户体验,因此,如何提高程序的启动速度,是本领域技术人员亟需解决的技术问题。


技术实现要素:

5.本申请提供了一种程序启动方法、类间关系构建方法及装置、移动终端,以提高程序的启动速度。
6.根据本申请的第一方面,提供了一种程序启动方法,包括:
7.获取待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系;
8.根据所述各个类之间的关联关系以及所述类信息,预加载与所述程序对应的类;
9.响应于所述程序的启动指令,执行预加载的类,并启动所述程序。
10.根据本申请的第二方面,提供了一种类间关联关系的构建方法,包括:
11.对程序进行事件跟踪分析;
12.根据分析结果确定所述程序启动过程使用到的类以及各个类之间的关联关系;
13.其中,所述关联关系用于在启动所述程序前,预加载所述类。
14.根据本申请的第三方面,提供了一种程序启动装置,包括:
15.获取单元,用于获取待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系;
16.预加载单元,用于根据所述各个类之间的关联关系以及所述类信息,预加载与所述程序对应的类;
17.启动单元,用于响应于所述程序的启动指令,执行预加载的类,并启动所述程序。
18.根据本申请的第四方面,提供了一种类间关联关系的构建装置,包括:
19.分析单元,用于对程序进行事件跟踪分析;
20.确定单元,用于根据分析结果确定所述程序启动过程使用到的类以及各个类之间的关联关系;
21.其中,所述关联关系用于在启动所述程序前,预加载所述类。
22.根据本申请的第五方面,提供了一种电子设备,包括:
23.至少一个处理器;以及
24.与所述至少一个处理器通信连接的存储器;其中,
25.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的程序启动方法或如第二方面所述的类间关联关系的构建方法。
26.根据本申请的第六方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如第一方面所述的程序启动方法或如第二方面所述的类间关联关系的构建方法。
27.根据本申请的第七方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面所述的程序启动方法或如第二方面所述的类间关联关系的构建方法。
28.根据本申请的第八方面,提供了一种移动终端,包括:如第三方面所述的程序启动装置。
29.应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
30.附图用于更好地理解本方案,不构成对本申请的限定。其中:
31.图1为一示例性实施例示出的类加载示意图;
32.图2为本申请一示例性实施例示出的程序启动方法的流程示意图;
33.图3为本申请一示例性实施例示出的类加载示意图;
34.图4为本申请另一示例性实施例示出的程序启动方法的流程示意图;
35.图5为本申请一示例性实施例示出的类加载示意图;
36.图6为本申请一示例性实施例示出的类间关联关系的构建方法的流程示意图;
37.图7为本申请另一示例性实施例示出的类间关联关系的构建方法的流程示意图;
38.图8为本申请一示例性实施例示出的程序启动装置的结构示意图;
39.图9为本申请另一示例性实施例示出的程序启动装置的结构示意图;
40.图10为本申请一示例性实施例示出的类间关联关系的构建装置的结构示意图;
41.图11为本申请另一示例性实施例示出的类间关联关系的构建装置的结构示意图;
42.图12是本申请实施例提供的电子设备的框图。
具体实施方式
43.以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
44.目前,在移动终端中设置有很多程序,比如手机软件,再比如在小程序平台中设置的小程序。用户可以操作移动终端,使得移动终端能够运行这些程序。
45.设置在移动终端中的程序在运行时,依托于该程序相关的类来实现程序功能。具体在程序启动时,需要将程序相关的类加载到java虚拟机(jvm)中。
46.程序启动时,会调用该程序中用于启动的方法,在调用该方法时,会检查该方法依赖的类是否已经被加载,具体从底层往上层依次检查各个加载器已经加载的类。如果发现类还没有被加载则加载该类。
47.图1为一示例性实施例示出的类加载示意图。
48.如图1所示,类加载器接收到加载类的请求时,首先将加载任务委托给父加载器,该父加载器如果还有父加载器,则再次向上委托,直到到达最顶层的类加载器为止,如果父加载器可以完成类加载任务,就成功返回,如果父加载器无法完成此加载任务时,子加载器才去加载。
49.例如,用户自定义的自定义类加载器11接收到类加载请求,则会将该请求委托给上一层的系统类加载器12,系统类加载器12接收到类加载请求后,则会将该请求委托给上一层的拓展类加载器13,拓展类加载器13接收到类加载请求后,则会将该请求委托给上一层的引导类加载器14。
50.引导类加载器14对类进行加载,若加载失败,则由下层的拓展类加载器13进行加载。若拓展类加载器13加载失败,则由下层的系统类加载器12进行加载。若系统类加载器12加载失败,则由下层的自定义类加载器11进行加载。
51.程序启动时需要加载不止一个类,若加载类耗时较长,就会使程序启动时间也较长。因此,程序加载类的流程影响到程序的启动速度。
52.为了提高程序的启动速度,本申请方案在待启动程序启动之前,预先加载启动过程中需要用到的类,进而在程序启动时可以直接执行这些类。这种实施方式中,能够节约程序启动时用于加载类的时间,进而提高程序启动速度。
53.本申请提供一种程序启动方法、类间关系构建方法及装置、移动终端,应用于计算机技术中的软件技术,以到达提高程序启动速度的效果。
54.图2为本申请一示例性实施例示出的程序启动方法的流程示意图。
55.如图2所示,本申请提供的程序启动方法,包括:
56.步骤201,获取待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系。
57.其中,可以由具备计算能力的电子设备执行本申请提供的方法,比如可以是计算机、智能终端、平板电脑等。
58.具体的,电子设备中可以设置一个或多个待启动程序。待启动程序例如可以是手机软件,再例如还可以是小程序平台中的小程序。
59.进一步的,若待启动程序是手机软件,则可以在手机处于开启状态,且待启动程序未运行时,执行本申请提供的方法。若待启动程序是小程序平台中的小程序,则可以在小程序平台运行时,执行本申请提供的方法。
60.实际应用时,针对每个待启动程序,可以预先确定其在启动过程需要运行的各个类信息以及各个类之间的关联关系。比如,可以在开发待启动程序时,确定该程序在运行过程中用到的类,并确定这些类间的关联关系。
61.比如,可以以待启动程序的启动入口类为起点,对于从启动开始到启动结束用到的类进行事件跟踪分析,就可以得到待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系。
62.一种实施方式中,电子设备安装待启动程序时,可以将确定的与该待启动程序对应的类信息以及各个类之间的关联关系下发到电子设备中。
63.另一种实施方式中,若待启动程序是小程序,则可以将各个小程序对应的类信息以及各个类之间的关联关系设置在小程序平台或后台服务器。当电子设备的小程序平台运行时,电子设备可以从小程序平台处或服务器处获取各个待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系。
64.其中,确定待启动程序在启动过程中需要运行的类为a、b、c、d,各个类间的关联关系可以包括类间的依赖关系,比如a类依赖于b类,b类依赖于c类和d类。可以获取待启动程序在启动过程中需要运行的类信息,以及这些类间的关联关系。
65.具体的,若a类在运行时会调用到b类中的方法,则认为a类依赖于b类。
66.步骤202,根据各个类之间的关联关系以及类信息,预加载与程序对应的类。
67.具体的,电子设备获取到各个类间的关联关系以及类信息后,可以在待启动程序未启动时,预先加载这些类。
68.进一步的,可以根据各个类间的关联关系依次加载待启动程序启动过程中用到的类。比如,可以根据各个类间的关联关系,从底层类向顶层类的方向依次加载。例如,a类依赖于b类,b类依赖于c类,则可以先加载c类,再加载b类,再加载a类。
69.实际应用时,电子设备可以读取各个类间的关联关系。具体可以获取该关联关系中的一个类,若该类依赖于其他类,则读取其他类,直到读取到不依赖于其他类的底层类为止,可以加载该底层类。底层类加载完毕后,可以继续加载该底层类的上一层类,通过逐层加载的方式,能够从底层类向顶层类的方向对类进行加载。
70.其中,电子设备中的虚拟机可以依次将用于描述各个类的数据加载到内存中,还可以对这些数据进行校验、准换解析和初始化,从而形成可以被虚拟机直接使用的java(一门面向对象编程语言)类型文件。
71.这种实施方式中,可以预先将待启动程序启动过程中用到的数据信息预先加载到内存中,从而在待启动程序启动时,无需再执行类的加载过程,能够节约程序启动时间。
72.步骤203,响应于程序的启动指令,执行预加载的类,并启动程序。
73.具体的,用户可以操作电子设备,控制电子设备启动上述待启动程序。比如,若电子设备具备触控屏,则用户可以通过触控操作启动电子设备中的程序。
74.电子设备接收到针对待启动程序的启动指令后,可以响应该启动指令,执行预先加载的与该程序对应的类,从而启动上述程序。
75.进一步的,电子设备可以根据类预先加载的顺序执行这些类。具体可以先执行后加载的类。例如,针对一个待启动程序,先加载c类,再加载b类,再加载a类,则电子设备在接收到该程序的启动指令后,可以先执行a类,再执行b类,再执行c类。
76.实际应用时,电子设备可以将加载的用于描述类的字节码转换为机器码,从而在操作系统中调用这些类。
77.其中,电子设备启动程序时,可以调用程序的启动入口类,并在该方法依赖于其他类时,再调用其他类。本申请提供的方法中,可以根据类间关联关系,按序预加载程序启动过程中用到的类,还可以根据预加载顺序执行这些类,从而在程序启动时可以准确的执行这些类。
78.图3为本申请一示例性实施例示出的类加载示意图。
79.如图3所示,类间关系31中包括类a、b、c、d、e,其中,a依赖于b类和c类,b类依赖于d类和e类。根据类间关系31对类进行加载时如32所示,可以先加载e类、d类,再加载b类,再加载c类,最后加载a类。
80.其中,若一个类依赖于多个类,那么在对这些多个类进行加载时,可以根据需求设置这些类的加载顺序。比如,加载b类、c类时,由于存在其他类依赖于b类,则可以先加载b类,再加载c类。
81.本申请提供的一种程序启动方法,包括:获取待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系;根据各个类之间的关联关系以及类信息,预加载与程序对应的类;响应于程序的启动指令,执行预加载的类,并启动程序。本申请提供的程序启动方法,可以在程序启动之前,预先加载程序在启动过程中需要运行的类,从而在程序启动时无需再次加载这些类,能够降低程序启动的耗时,进而提高程序启动速度。
82.图4为本申请另一示例性实施例示出的程序启动方法的流程示意图。
83.如图4所示,本申请提供的程序启动方法,包括:
84.步骤401,获取与待启动程序对应的预设节点树,预设节点树中包括待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系。
85.其中,可以由具备计算能力的电子设备执行本申请提供的方法,比如可以是计算机、智能终端、平板电脑等。电子设备中可以设置一个或多个待启动程序。待启动程序例如可以是手机软件,再例如还可以是小程序平台中的小程序。
86.具体的,本申请实施方式中,可以通过预设节点树的方式记录与待启动程序对应的预设节点树,预设节点树中包括待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系。
87.预设节点树中包括父节点和子节点,可以通过父子节点的方式清晰的记录类间的关联关系。
88.进一步的,可以预先设置与各个待启动程序对应的预设节点树,在待启动程序启动之前,电子设备可以获取该程序对应的预设节点树,从而获取待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系。
89.实际应用时,预设节点树中包括多个节点,一个节点可以代表一个类。父节点代表的类依赖于子节点代表的类。比如,a类依赖于b类,则b类可以作为a类的子节点。
90.其中,可以以待启动程序的启动入口类为起点,对于从启动开始到启动结束用到的类进行事件跟踪分析,并根据分析结果构建该程序对应的预设节点树。
91.比如,以启动入口类a为起点进行遍历,若类a依赖于类b,则将类b作为类a的子节点。若类b依赖于类c,则将类c作为类b的子节点,以此类推,能够构建出预设节点树。
92.具体的,预设节点树的层数小于或等于预设层数。在构建预设节点树时,若当前构建的预设节点树的层数小于或等于预设层数,则可以停止遍历,完成预设节点树的构建过程。这种实施方式中,在根据预设节点树进行类的预加载时,能够避免预加载的类数量过多,造成电子设备的内存消耗过多。
93.步骤402,读取预设节点树的节点;若节点包括子节点,则对子节点的类信息对应的类进行加载;若节点不包括子节点,则对节点的类信息对应的类进行加载。
94.进一步的,在加载待启动程序在启动过程中用到的类时,可以根据各个类之间的关联关系以及类信息,先加载父类,再加载子类。其中,子类依赖于父类。
95.实际应用时,类之间的关联关系中可以包括多个类的标识,比如a、b、c。可以根据关联关系,确定这些标识代表的类间的父子关系,比如,a是b的子类,b是c的子类。
96.其中,还可以根据类信息,确定类标识代表的类的详细信息,例如类名称、类的位置等。从而根据类间父子关系,加载这些类。通过这种实施方式中,可以按照类间关联关系,预先先加载程序运行过程中需要用到的父类,再加载子类,从而符合电子设备运行程序时加载类的顺序。
97.具体的,若通过预设节点树的方式记录类间关系,预设节点树中包括多个节点,一个节点代表一个类信息。电子设备可以读取预设节点树中的节点。比如,预设节点树存在一个节点,该节点代表的类信息为a,则电子设备可以读取该节点,还可以读取该节点的父节点、子节点等信息。
98.进一步的,若节点包括子节点,则对子节点代表的类信息对应的类进行加载。如果电子设备读取的节点包括子节点,则可以先加载该子节点。进一步的,若子节点也具有子节点,则可以进一步的加载子节点的子节点,以此类推。
99.实际应用时,若节点不包括子节点,则对节点代表的类信息对应的类进行加载。若电子设备读取到一个节点,其不具备子节点,则可以直接加载该节点代表的类信息对应的类。
100.这种实施方式中,可以通过预设节点树记录类间的关联关系,具体记录类间的依赖关系。在加载类时,可以根据预设节点树中的节点是否具有子节点,从而确定该节点代表的类是否有依赖的类,通过这种方式对类进行加载,能够先加载父类,再加载子类,与电子设备运行程序时加载类的顺序一致。
101.其中,对类进行加载的实现方式可以是对类进行入栈处理。
102.具体的,针对一个待启动程序可以设置一个数据栈,可以将该待启动程序启动过程中用到的类加载到对应的数据栈中。在基于预设节点树加载类时,能够先加载父类,再加载子类。在对类进行入栈处理时,可以先对父类进行入栈处理,再对子类进行入栈处理。数据栈具有先入后出的性质,因此,在执行类时,能够达到先执行子类后执行父类的效果,这与电子设备运行程序时执行类的顺序是一致的。
103.步骤403,响应于程序的启动指令,按照类入栈时顺序的反序,执行预加载的类。
104.进一步的,用户可以操作电子设备,控制电子设备运行待启动的程序。由于该程序在启动过程中使用的类已经被预先加载了,因此,可以执行这些类,而无需再次加载,从而可以提高程序的启动速度。
105.实际应用时,电子设备可以按照这些类入栈顺序的反序,执行预加载的类。比如,先对类b进行入栈,后对类a进行入栈,则在执行预加载的类时,可以先执行类a,后执行类b。
106.在对类进行入栈处理时,先对父类进行入栈处理,再对子类进行入栈处理。在执行类时,先对后入栈的类进行处理,后对先进入的类进行处理,因此,能够达到先执行子类后执行父类的效果,这与电子设备运行程序时执行类的顺序是一致的。
107.本申请提供的方法可以应用在设置有小程序平台的电子设备中,小程序平台中可以设置有多个小程序。
108.其中,可以在响应小程序启动平台时,获取与待启动程序对应的各个类信息以及各个类之间的关联关系。这种事实施方式中,待启动程序可以是小程序平台中设置的小程序。
109.这种实施方式,可以提高电子设备中小程序的启动速度,从而提高用户体验。
110.具体的,还可以根据用户的历史操作行为,确定目标小程序。电子设备在响应小程序平台的启动指令时,可以获取目标小程序获取待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系,进而加载目标小程序在启动过程中用到的类。
111.进一步的,目标小程序可以是用户常用的小程序,这种实施方式能够在占用电子设备内存较小的情况下,提高用户常用小程序的启动速度,进一步的提高用户体验。
112.这种实施方式中,各个目标小程序的预设节点树可以设置在小程序平台中。
113.在一种可选的实施方式中,电子设备根据预设节点树加载类时,可以先加载右节点,再加载左节点。
114.图5为本申请一示例性实施例示出的类加载示意图。
115.如图5所示,类间关系51中包括类a

i,其中,a依赖于b类和c类,b类依赖于d类和e类,d类依赖于g类和h类,c类依赖于f类,f类依赖于i类。
116.在根据类间关系51对类进行预加载时,若一个节点具有多个子节点,则先处理右边的子节点,再处理左边的子节点。并且,依然按照从子节点向父节点的顺序进行处理。
117.电子设备会按照i、f、c、e、h、g、d、b、a的顺序对类进行预加载。
118.图6为本申请一示例性实施例示出的类间关联关系的构建方法的流程示意图。
119.如图6所示,本申请提供的类间关联关系的构建方法,包括:
120.步骤601,对程序进行事件跟踪分析。
121.其中,可以由具备计算能力的电子设备执行本申请提供的方法,比如可以是计算机。
122.具体的,被处理的程序例如可以是手机软件,再例如还可以是小程序平台中的小程序。该程序可以设置在例如智能手机或平板电脑中。
123.进一步的,可以以程序的启动入口类为起点,对于从启动开始到启动结束这一过程进行事件跟踪分析,并得到分析结果。
124.实际应用时,分析结果中例如可以包括程序启动过程中用到的类,还可以包括这些类间的关联关系,比如执行类a时,会调用类b,则可以认为类a依赖于类b。
125.其中,分析结果中还可以包括各个类的加载时长,比如程序启动过程中,加载类a的时间为t1,加载类b的时间为t2。
126.步骤602,根据分析结果确定程序启动过程使用到的类以及各个类之间的关联关系;其中,关联关系用于在启动程序前,预加载类。
127.具体的,可以根据分析结果确定该程序在启动过程中使用到的类,以及各个类之间的关联关系。比如,启动过程中用到了类a、b、c,类间关系为类a依赖于类b,类b依赖于类c。
128.进一步的,该程序设置在智能手机或平板电脑等设备中时,这些设备可以在程序未启动时,根据上述类间关联关系预先加载程序启动过程中用到的类,从而提高程序启动速度。
129.实际应用时,设置有程序的设备可以获取待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系;根据各个类之间的关联关系以及类信息,预加载与程序对应的类;响应于程序的启动指令,执行预加载的类,并启动程序。从而可以在程序启动之前,预先加载程序在启动过程中需要运行的类,在程序启动时无需再次加载这些类,能够降低程序启动的耗时,进而提高程序启动速度。
130.本申请提供的类间关联关系的构建方法,包括:对程序进行事件跟踪分析;根据分析结果确定程序启动过程使用到的类以及各个类之间的关联关系;其中,关联关系用于在启动程序前,预加载类。本申请提供的方法可以预先确定程序启动过程中用到的类以及这些类间的关系,从而在程序启动之前,可以基于类间关系预先加载程序在启动过程中需要运行的类,进而提高程序启动速度。
131.图7为本申请另一示例性实施例示出的类间关联关系的构建方法的流程示意图。
132.如图7所示,本申请提供的类间关联关系的构建方法,包括:
133.步骤701,对程序进行事件跟踪分析。
134.步骤702,根据分析结果确定所述程序启动过程使用到的类以及各个类之间的关联关系。
135.步骤701、步骤702与步骤601、602的实现方式、原理类似。
136.在一种可选的实施方式中,可以根据分析结果确定程序启动过程使用到的耗时大于预设时长的目标类以及目标类之间的关联关系。并根据目标类的关联关系,构建预设节点树。
137.这种实施方式中,在根据预设节点树预加载类时,只预加载耗时较长的目标类,从而可以降低预加载过程占用的内存。
138.步骤703,根据各个类之间的关联关系,构建包括类的类信息的预设节点树;其中,预设节点树用于在启动程序前,预加载类。
139.其中,本申请提供的方法中,通过预设节点树的形式记录类间关联关系。预设节点树中包括多个节点,且节点之间可以具有父子关系,因此,可以通过预设节点树的形式清晰的记录程序启动过程中用到的类以及这些类间的依赖关系。
140.具体的,针对每个程序都可以设置与之对应的预设节点树。从而使设置有该程序的设备能够预先加载该程序在启动过程中使用的类。
141.进一步的,构建的预设节点树中包括多个节点,一个节点可以代表一个类。父节点代表的类依赖于子节点代表的类。比如,a类依赖于b类,则b类可以作为a类的子节点。
142.实际应用时,可以以程序的启动类为起点对关联关系进行深度遍历得到遍历结果;根据遍历结果将一个类的类信息作为其依赖类的类信息的父节点,并继续对关联关系进行遍历。
143.比如,以启动入口类a为起点进行遍历,若类a依赖于类b,则将类b作为类a的子节点。若类b依赖于类c,则将类c作为类b的子节点,以此类推,能够构建出预设节点树。
144.其中,本申请提供的方法中,通过深度遍历算法能够逐个分析程序的启动类,从而避免发生遗漏。
145.可选的,还可以预先设置遍历深度。在对类间关系进行遍历构建预设节点树时,若预设节点树达到预设遍历深度,则停止遍历关联关系。
146.在构建预设节点树时,若当前构建的预设节点树的层数小于或等于预设遍历深度,则可以停止遍历,完成预设节点树的构建过程。这种实施方式中,在根据预设节点树进行类的预加载时,能够避免预加载的类数量过多,造成电子设备的内存消耗过多。
147.图8为本申请一示例性实施例示出的程序启动装置的结构示意图。
148.如图8所示,本申请提供的程序启动装置800,包括:
149.获取单元81,用于获取待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系;
150.预加载单元82,用于根据所述各个类之间的关联关系以及所述类信息,预加载与所述程序对应的类;
151.启动单元83,用于响应于所述程序的启动指令,执行预加载的类,并启动所述程序。
152.本申请提供的程序启动装置,包括:获取单元,用于获取待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系;预加载单元,用于根据各个类之间的关联关系以及类信息,预加载与程序对应的类;启动单元,用于响应于程序的启动指令,执行预加载的类,并启动程序。本申请提供的程序启动装置,可以在程序启动之前,预先加载程序在启动过程中需要运行的类,从而在程序启动时无需再次加载这些类,能够降低程序启动的耗时,进而提高程序启动速度。
153.图9为本申请另一示例性实施例示出的程序启动装置的结构示意图。
154.在上述实施例基础上,本实施例提供的程序启动装置900,在一种可选的实施方式中,设置有与所述待启动程序对应的预设节点树,所述预设节点树中包括所述待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系。
155.在一种可选的实施方式中,所述预设节点树的层数小于或等于预设层数。
156.在一种可选的实施方式中,预加载单元82具体用于:
157.根据所述各个类之间的关联关系以及所述类信息,先加载父类,再加载子类。
158.在一种可选的实施方式中,预加载单元82包括:
159.读取模块821,用于读取所述预设节点树的节点;
160.加载模块822,用于:若所述节点包括子节点,则对所述子节点代表的类信息对应的类进行加载;若所述节点不包括子节点,则对所述节点代表的类信息对应的类进行加载。
161.在一种可选的实施方式中,预加载单元82具体用于:
162.对所述类进行入栈处理。
163.在一种可选的实施方式中,启动单元83具体用于:
164.按照类入栈时顺序的反序,执行预加载的类。
165.在一种可选的实施方式中,在响应小程序平台的启动指令时,所述获取单元81执行获取待启动程序在启动过程需要运行的各个类信息以及各个类之间的关联关系的步骤;
166.其中,所述待启动程序为所述小程序平台中设置的小程序。
167.图10为本申请一示例性实施例示出的类间关联关系的构建装置的结构示意图。
168.本申请提供的类间关联关系的构建装置100,包括:
169.分析单元101,用于对程序进行事件跟踪分析;
170.确定单元102,用于根据分析结果确定所述程序启动过程使用到的类以及各个类
之间的关联关系;
171.其中,所述关联关系用于在启动所述程序前,预加载所述类。
172.本申请提供的类间关联关系的构建装置,包括:分析单元,用于对程序进行事件跟踪分析;确定单元,用于根据分析结果确定所述程序启动过程使用到的类以及各个类之间的关联关系;其中,所述关联关系用于在启动所述程序前,预加载所述类。本申请提供的装置可以预先确定程序启动过程中用到的类以及这些类间的关系,从而在程序启动之前,可以基于类间关系预先加载程序在启动过程中需要运行的类,进而提高程序启动速度。
173.图11为本申请另一示例性实施例示出的类间关联关系的构建装置的结构示意图。
174.如图11所示,本申请提供的类间关联关系的构建装置110,在上述实施例基础上,在一种可选的实施方式中,还包括构建单元103,用于:
175.根据各个类之间的关联关系,构建包括所述类的类信息的预设节点树;其中,所述预设节点树用于在启动所述程序前,预加载所述类。
176.在一种可选的实施方式中,构建单元103,包括:
177.遍历模块1031,用于以所述程序的启动类为起点对所述关联关系进行深度遍历得到遍历结果;
178.构建模块1032,用于根据所述遍历结果将一个类的类信息作为其依赖类的类信息的父节点,所述遍历模块继续对所述关联关系进行遍历。
179.在一种可选的实施方式中,还包括:
180.若所述预设节点树达到预设遍历深度,则所述遍历模块停止遍历所述关联关系。
181.在一种可选的实施方式中,所述确定单元102,具体用于:确定所述程序启动过程使用到的耗时大于预设时长的目标类以及目标类之间的关联关系。
182.可选的,本申请还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上任一种程序启动方法或类间关联关系的构建方法。
183.可选的,本申请还提供一种移动终端,包括:上述任一种程序启动装置。
184.根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
185.如图12所示,是根据本申请实施例的程序启动方法或类间关联关系的构建方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
186.如图12所示,该电子设备1200包括:一个或多个处理器1201、存储器1202,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图12中以一个处理器1201为例。
187.存储器1202即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的程序启动方法或类间关联关系的构建方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的程序启动方法或类间关联关系的构建方法。
188.存储器1202作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的程序启动方法或类间关联关系的构建方法对应的程序指令/模块(例如,附图8所示的获取单元81、预加载单元82和启动单元83)。处理器1201通过运行存储在存储器1202中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的程序启动方法或类间关联关系的构建方法。
189.存储器1202可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据程序启动方法或类间关联关系的构建方法的电子设备1200的使用所创建的数据等。此外,存储器1202可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1202可选包括相对于处理器1201远程设置的存储器,这些远程存储器可以通过网络连接至程序启动方法或类间关联关系的构建方法的电子设备1200。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
190.程序启动方法或类间关联关系的构建方法的电子设备1200还可以包括:输入装置1203和输出装置1204。处理器1201、存储器1202、输入装置1203和输出装置1204可以通过总线或者其他方式连接,图12中以通过总线连接为例。
191.输入装置1203可接收输入的数字或字符信息,以及产生与程序启动方法或类间关联关系的构建方法的电子设备1200的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1204可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
192.此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
193.这些计算机程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算机程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁
盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
194.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
195.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
196.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端

服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务("virtual private server",或简称"vps")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
197.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
198.上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1