CN109308200A - 一种内存数据加载方法、装置及其设备 - Google Patents
一种内存数据加载方法、装置及其设备 Download PDFInfo
- Publication number
- CN109308200A CN109308200A CN201811049750.2A CN201811049750A CN109308200A CN 109308200 A CN109308200 A CN 109308200A CN 201811049750 A CN201811049750 A CN 201811049750A CN 109308200 A CN109308200 A CN 109308200A
- Authority
- CN
- China
- Prior art keywords
- data
- target application
- loaded
- load
- access times
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
Abstract
本申请公开了一种内存数据加载方法、装置及其设备,用于解决现有技术中的内存数据加载方法容易导致应用启动时间过长或者应用无响应的问题。所述方法包括:响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据;加载所述第一数据至内存中;获取第二数据的加载优先级;其中,所述第二数据为待加载数据中除所述第一数据以外的数据,所述待加载数据为所述目标应用运行时待加载的数据;基于所述第二数据的加载优先级,分批加载所述第二数据至内存中。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存数据加载方法、装置及其设备。
背景技术
目前,内存数据加载技术有两种:第一种是安卓端的内存数据加载技术,常用的有SharedPreferences(SharedPreferences是安卓平台上一个轻量级的存储类,用来保存应用的一些常用配置),SharedPreferences的原理是当第一次读取数据时,就将本地数据一次性全量拉入内存,以后所有数据都在内存操作,异步或同步保存到文件;第二种是服务器端的数据技术,服务器端的内存数据加载设计通常一次只能将一条数据拉入内存。
然而,上述两种内存数据加载设计方案都存在一些问题:第一种内存数据加载技术在数据量较大时,则会在第一次读取的时候阻塞主线程,从而导致应用程序启动时需要长时间等待或者还会导致应用程序无响应(Application Not Responding,ANR)问题的出现;而第二种内存数据加载技术,若同时有500条数据需要被加载,就需要有500次的输入输出(Input Output,IO),这将会造成资源上的极大浪费,也可能造成多线程同时读取数据,从而导致CPU占用过高问题。
因此,现有技术中的内存数据加载技术仍然需要进一步地改进来应对上述问题。
发明内容
本申请实施例提供了一种内存数据加载方法、装置及其设备,以解决现有技术中的内存数据加载方法容易导致应用启动时间过长或者应用无响应的问题。
为解决上述技术问题,本申请实施例是这样实现的:
第一方面,提出了一种内存数据加载方法,包括:
响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据;
加载所述第一数据至内存中;
获取第二数据的加载优先级;其中,所述第二数据为待加载数据中除所述第一数据以外的数据,所述待加载数据为所述目标应用运行时待加载的数据;
基于所述第二数据的加载优先级,分批加载所述第二数据至内存中。
第二方面,提出了一种内存数据加载装置,包括:
确定单元,用于响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据;
第一加载单元,用于加载所述第一数据至内存中;
获取单元,用于获取第二数据的加载优先级;其中,所述第二数据为待加载数据中除所述第一数据以外的数据,所述待加载数据为所述目标应用运行时待加载的数据;
第二加载单元,用于基于所述第二数据的加载优先级,分批加载所述第二数据至内存中。
第三方面,提出了一种电子设备,该电子设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据;
加载所述第一数据至内存中;
获取第二数据的加载优先级;其中,所述第二数据为待加载数据中除所述第一数据以外的数据,所述待加载数据为所述目标应用运行时待加载的数据;
基于所述第二数据的加载优先级,分批加载所述第二数据至内存中。
第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据;
加载所述第一数据至内存中;
获取第二数据的加载优先级;其中,所述第二数据为待加载数据中除所述第一数据以外的数据,所述待加载数据为所述目标应用运行时待加载的数据;
基于所述第二数据的加载优先级,分批加载所述第二数据至内存中。
本申请实施例采用上述技术方案至少可以达到下述技术效果:
本发明实施例中,能够首先响应于目标应用的启动操作,确定该目标应用启动所需的第一数据,然后加载该第一数据至内存中,再获取第二数据的加载优先级,其中该第二数据为待加载数据中除第一数据以外的数据,该待加载数据为目标应用运行时待加载的数据,最后能够基于第二数据的加载优先级,分批加载该第二数据至内存中。通过首先加载目标应用启动时所需的第一数据,然后基于剩余数据的优先级来分批加载剩余数据,避免在目标应用启动时就一次性加载目标应用的所有数据而导致目标应用启动时间过长,或者目标应用无响应的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书一个实施例提供的一种内存数据加载方法的实施流程示意图;
图2为本说明书一个实施例提供的内存数据加载方法应用在实际场景中的示意图;
图3为本说明书一个实施例体用的异步记录数据的访问次数至数据库的过程示意图;
图4为本说明书一个实施例提供的加载高频数据至内存的过程示意图;
图5为本说明书一个实施例提供的一种内存数据加载装置的结构示意图;
图6为本说明书一个实施例提供的一种内存数据加载设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
为解决现有技术中的内存数据加载方法容易导致应用启动时间过长或者应用无响应的问题,本说明书实施例提供一种内存数据加载方法。本说明书实施例提供的内存数据加载方法的执行主体可以但不限于手机、平板电脑、个人电脑等能够被配置为执行本发明实施例提供的该方法终端设备中的至少一种。
为便于描述,下文以该方法的执行主体为能够执行该方法的终端设备为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为终端设备只是一种示例性的说明,并不应理解为对该方法的限定。
如背景技术中所述,现有技术中,以安卓端的应用为例,应用在启动时往往会一次性将该应用运行所需的全部数据通过应用的主线程加载到内存。若一个应用的数据量较大,则很可能在应用启动时,导致应用的主线程阻塞,使得应用启动时需要等待较长时间,甚至会导致应用启动之后一段时间内无响应,即背景技术中所述的ANR问题。无论是上述应用启动需等待较长时间还是ANR问题,都会使得用户对该应用产生不好的体验。
为了解决这个问题,本发明实施例可以预先通过应用的配置信息确定应用启动时所需的第一数据,然后确定应用运行时所需的其他数据的加载优先级,实现对应用中的数据分批加载到内存中,避免应用启动时一次性通过应用的主线程加载所有数据到内存中时,导致主线程阻塞、使得应用启动需要等待较长时间,甚至应用无响应等问题的出现,提高数据加载效率,进而提高应用启动和运行的效率,从而提高用户的体验。
具体地,本说明书一个或多个实施例提供的一种内存数据加载方法的实现流程示意图如图1所示,包括:
步骤110,响应于目标应用的启动操作,确定目标应用启动所需的第一数据;
可选地,响应于目标应用的启动操作,确定目标应用启动所需的第一数据,具体可以首先,响应于目标应用的启动操作,获取目标应用的配置信息;然后,基于目标应用的配置信息,确定目标应用启动所需的第一数据。应理解,由于在实际应用中,目标应用启动所需的第一数据可以通过目标应用的配置信息来确定,那么在响应于目标应用的启动操作,启动目标应用之前,往往可以预先获取该目标应用的配置信息,而基于目标应用的配置信息,则可以获取该目标应用启动时所需的第一数据。
下面以具体应用为例,对如何响应于目标应用的启动操作,确定目标应用启动所需的第一数据进行详细说明。
应理解,有些应用中的功能往往会有很多,其运行时所需的数据往往也较多,以手机银行应用为例,在手机银行应用启动之后,会显示该手机银行应用的主界面,为了提高启动效率,可以在接收到用户对该手机银行应用的启动操作之后,首先获取该手机银行应用的配置信息,并基于该手机银行应用的配置信息,确定手机银行应用启动所需的第一数据。由于手机银行应用在启动之后,往往会显示该手机银行应用的主界面信息,因此,可以将与该手机银行应用的主界面信息相关的数据确定为第一数据。
步骤120,加载第一数据至内存中;
可选地,为了避免目标应用启动时,主线程阻塞,则在目标应用启动时,可以只通过主线程加载第一数据至内存中,那么加载第一数据至内存中,具体可以通过目标应用的主线程加载第一数据至内存中。即尽量减小目标应用启动时通过主线程加载的数据量,以避免主线程在目标应用启动时就发生阻塞。
继续沿用上述手机银行应用的例子,在确定了该手机银行应用启动时所需的第一数据,即与主界面信息相关的数据之后,为避免主线程在该手机银行应用启动后发生阻塞使得手机银行应用启动时需要等待过多的时间,甚至是手机银行应用无响应的问题,可以通过手机银行应用的主线程加载该第一数据,即与主界面消息相关的数据至内存中。也就是说,在该手机银行应用启动时,只通过主线程加载较少的数据量(只通过主线程加载手机银行应用启动时所需的数据,即主界面信息相关的数据),从而提高手机银行应用的启动效率,同时也避免用户等待过长的时间来开启该手机银行应用。
如图2所示,为本发明实施例提供的内存数据加载方法应用在实际场景中的示意图。在图2中,包括以下几个部分:目标应用启动21、数据加载过程22、内存/缓存池23、内存/缓存数据管理24(包括读取数据和写入数据)和异步记录访问次数至数据库25。如图2所示,在目标应用启动之后,首先加载第一数据,在第一数据加载完成之后,再加载高频数据和低频数据。
步骤130,获取第二数据的加载优先级;
其中,第二数据为待加载数据中除第一数据以外的数据,待加载数据为目标应用运行时待加载的数据。如上文所述,第一数据为目标应用启动时所需的数据,第二数据则是目标应用启动和运行时待加载的所有数据中除第一数据以外的数据。这里所述的待加载的数据即为目标应用从启动到运行时所需的所有数据。
继续以上述手机银行应用为例,由于手机银行应用往往会包含多个子功能,比如贷款功能、转账功能、信用卡服务、投资理财服务、保险服务,等等,这些功能对应的数据即可以为本发明实施例中的第二数据。该第二数据在手机银行应用启动时并不需要,因此,可以在手机银行应用通过主线程加载完其启动所需的第一数据之后,再加载该第二数据至内存中,以避免同时加载这些数据量较大的数据使得手机银行应用启动时间太长等问题。
可选地,获取第二数据的加载优先级,具体可以首先,获取预设时间段内目标应用的用户对第二数据的访问次数;然后,基于预设时间段内目标应用的用户对第二数据的访问次数,确定第二数据的权重;最后,基于第二数据的权重,确定第二数据的加载优先级。
其中,基于预设时间段内目标应用的用户对第二数据的访问次数,确定第二数据的权重,具体来说,访问次数与权重既可以是直接相等的关系,比如一组数据的访问次数为10,15,11,6,那么这组数据相应的权重为:10,15,11,6。也可以是访问次数经过一定的数学处理,比如为了便于计算,避免访问次数过大而导致计算量较大,可以将所有数据的访问次数都除以一个基数得到数据的权重。比如一组数据的访问次数为:123,326,231,129,可以将这组数据的访问次数除以同一个基数100,得到这组数据的权重:1.23,3.26,2.31,1.29。
而基于第二数据的权重,确定第二数据的加载优先级,具体可以将第二数据的权重划分为多个区间,并将每个区间中的权重对应于同一加载优先级。比如第二数据的权重为:2,3,9,10,8,6,20,25,4,23,将这组数据的权重划分为多个区间:[1,5],[6,10],[11,15],[16,20],[21,25],这些权重区间对应的加载优先级分别为:1,2,3,4,5,那么在确定加载优先级时,可以基于第二数据的权重具体属于哪个权重区间,再确定该权重区间对应的加载优先级。比如第二数据的权重为2,由于2∈[1,5],那么可以确定该第二数据的加载优先级为1。
可选地,获取预设时间段内目标应用的用户对第二数据的访问次数,具体可以首先,在预设时间段内,通过预设访问次数记录算法来记录目标应用的用户对待加载数据的访问次数;然后,基于目标应用的用户对待加载数据的访问次数和第一数据的标识,获取第二数据的访问次数;其中,预设访问次数记录算法包括下述至少一种:最近最少使用(Leastrecently used,LRU)算法和访问次数记录算法。
其中,通过预设访问次数记录算法来记录目标应用的用户对待加载数据的访问次数,以访问次数记录算法为例,初始状态下,目标应用的用户对待加载数据的访问次数均为0,用户每访问一次待加载数据中的某一条数据,则会对该条数据的访问次数进行加1处理,直到在预设时间段内完成对待加载数据的访问次数的记录。
再以LRU算法为例,本发明实施例可以通过LRU算法来获取第二数据的最近最少使用的数据,也就是访问次数最少的数据,将通过LRU算法确定出的最近最少使用的数据确定为低频数据,否则确定为高频数据。
如图3所示,为本发明实施例提供的内存数据加载方法中异步记录数据访问次数至数据库的过程示意图,包括:
步骤31,用户访问内存中的数据;
步骤32,将用户访问的数据的访问次数加1;
步骤33,异步记录上述访问次数至数据库中,以便下次启动应用时能够基于该数据库中记录的数据访问次数来确定哪些数据是高频数据,哪些数据是低频数据,为优先加载高频数据提供依据。
下面以具体的数据来说明,如何确定高频数据和低频数据的过程。
如表1所示,为待加载数据的信息示意表格,该表格中包括待加载数据的标识、数据值、权重和用于标识数据是否要在目标应用启动时加载的字段app_init,当app_init为1时,则表明目标应用启动时需要加载该数据,而当app_init为0时,则表明目标应用启动时不需要加载该数据。那么基于该字段app_init,便可以确定哪些数据为第一数据,显然从表1中可以看出,数据标识为test1和test2的数据的字段app_init均为1,那么可以确定数据标识为test1和test2的数据为目标应用启动时需要的数据,即第一数据,如表2所示。假设将权重值大于或等于1的数据确定为高频数据,那么从表1可以看出,数据标识为test2、test3、test6、test7和test8的数据为高频数据,而由于数据标识为test2的数据已被确定为第一数据,那么可以确定高频数据为数据标识为test3、test6、test7和test8的数据,如表3所示。而权重值小于1的数据则可以确定为低频数据,即如表4所示的数据标识为test4、test5和test9的数据为低频数据。
表1待加载数据的信息
标识 | 数据值 | 权重 | app_init |
test1 | 100 | 0 | 1 |
test2 | 测试 | 10 | 1 |
test3 | TRUE | 1 | 0 |
test4 | 100 | 0 | 0 |
test5 | 测试 | 0 | 0 |
test6 | TRUE | 1 | 0 |
test7 | 100 | 5 | 0 |
test8 | 测试 | 2 | 0 |
test9 | TRUE | 0 | 0 |
表2第一数据的相关信息
表3高频数据的相关信息
标识 | 数据值 | 权重 | app_init |
test7 | 100 | 5 | 0 |
test8 | 测试 | 2 | 0 |
test3 | TRUE | 1 | 0 |
test6 | TRUE | 1 | 0 |
表4低频数据的相关信息
步骤140,基于第二数据的加载优先级,分批加载第二数据至内存中。
可选地,基于第二数据的加载优先级,分批加载第二数据,具体可以,首先,基于第二数据的加载优先级,确定第二数据中的高频数据和低频数据;其中,高频数据为第二数据的加载优先级大于或等于预设等级的数据,低频数据为第二数据的加载优先级小于所述预设等级的数据;然后,加载高频数据至内存中;在高频数据加载完成之后,再加载低频数据至内存中。
在实际应用中可根据内存的性能来确定预设等级的大小,比如某种型号的终端设备的内存可以同时处理100条数据,那么可以将第二数据中的数据按照加载优先级由高到低的顺序进行排列,那么第100条数据的加载优先级即为预设等级,那么在确定高频数据时,则可以将加载优先级大于或等于预设等级的数据确定为高频数据,在确定低频数据时,则可以将加载优先级小于预设等级的数据确定为低频数据。
可选地,为避免通过主线程加载的数据量太大,而导致主线程阻塞,加载高频数据至内存中,具体可以通过目标应用的线程池加载高频数据至内存中。在高频数据加载完成之后,再加载低频数据至内存中,具体也可以通过目标应用的线程池加载低频数据至内存中。其中,本发明实施例中的目标应用的主线程和线程池可以在目标应用启动时开启,可以同时开启,也可以分别在加载对应的数据时开启,其开启时机在本发明实施例中不作具体限定。
如图4所示,为本发明实施例提供的内存数据加载方法中的加载高频数据的过程示意图,包括:
步骤41,开启线程池;
步骤42,通过线程池加载高频数据,该高频数据的条数,可以是预先设定的,比如可以默认是50条高频数据;
步骤43,批量读入高频数据至内存中,每批为固定条数,比如可以是50条。
可选地,为了便于用户下次启动目标应用时,将目标应用中的待加载数据加载至内存中还能够按照更新后的第二数据的加载优先级来加载,在基于第二数据的加载优先级,加载第二数据之后,还可以首先,清除对待加载数据的加载优先级的标记;然后在下一个预设时间段内,通过预设访问次数记录算法记录待加载数据的访问次数。
本发明实施例中,能够首先响应于目标应用的启动操作,确定该目标应用启动所需的第一数据,然后加载该第一数据至内存中,再获取第二数据的加载优先级,其中该第二数据为待加载数据中除第一数据以外的数据,该待加载数据为目标应用运行时待加载的数据,最后能够基于第二数据的加载优先级,分批加载该第二数据至内存中。通过首先加载目标应用启动时所需的第一数据,然后基于剩余数据的优先级来分批加载剩余数据,避免在目标应用启动时就一次性加载目标应用的所有数据而导致目标应用启动时间过长,或者目标应用无响应的问题。
图5是本说明书提供的内存数据加载装置500的结构示意图。请参考图5,在一种软件实施方式中,内存数据紧挨着装置500可包括确定单元501、第一加载单元502、获取单元503和第二加载单元504,其中:
确定单元501,用于响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据;
第一加载单元502,用于加载所述第一数据至内存中;
获取单元503,用于获取第二数据的加载优先级;其中,所述第二数据为待加载数据中除所述第一数据以外的数据,所述待加载数据为所述目标应用运行时待加载的数据;
第二加载单元504,用于基于所述第二数据的加载优先级,分批加载所述第二数据至内存中。
本发明实施例中,能够首先通过确定单元501响应于目标应用的启动操作,确定该目标应用启动所需的第一数据,然后通过第一加载单元502加载该第一数据至内存中,再通过获取单元503获取第二数据的加载优先级,其中该第二数据为待加载数据中除第一数据以外的数据,该待加载数据为目标应用运行时待加载的数据,最后能够通过第二加载单元504基于第二数据的加载优先级,分批加载该第二数据至内存中。通过首先加载目标应用启动时所需的第一数据,然后基于剩余数据的优先级来分批加载剩余数据,避免在目标应用启动时就一次性加载目标应用的所有数据而导致目标应用启动时间过长,或者目标应用无响应的问题。
可选地,在一种实施方式中,所述获取单元503,用于:
获取预设时间段内所述目标应用的用户对所述第二数据的访问次数;
基于所述预设时间段内目标应用的用户对所述第二数据的访问次数,确定所述第二数据的权重;
基于所述第二数据的权重,确定所述第二数据的加载优先级。
可选地,在一种实施方式中,所述第二加载单元504,用于:
基于所述第二数据的加载优先级,确定所述第二数据中的高频数据和低频数据;其中,所述高频数据为所述第二数据的加载优先级大于或等于预设等级的数据,所述低频数据为所述第二数据的加载优先级小于所述预设等级的数据;
加载所述高频数据;
在所述高频数据加载完成之后,加载所述低频数据。
可选地,在一种实施方式中,所述第一加载单元502,用于:
通过所述目标应用的主线程加载所述第一数据至内存中。
可选地,在一种实施方式中,所述第二加载单元504,用于:
通过所述目标应用的线程池加载所述高频数据至内存中。
可选地,在一种实施方式中,所述获取单元503,用于:
在所述预设时间段内,通过预设访问次数记录算法来记录所述目标应用的用户对所述待加载数据的访问次数;
基于所述目标应用的用户对所述待加载数据的访问次数和所述第一数据的标识,获取所述第二数据的访问次数;
其中,所述预设访问次数记录算法包括下述至少一种:最近最少使用LRU算法和访问次数记录算法。
可选地,在一种实施方式中,所述装置还包括:
清除单元505,用于清除对所述待加载数据的加载优先级的标记;
记录单元506,用于在下一个所述预设时间段内,通过预设访问次数记录算法记录所述待加载数据的访问次数。
可选地,在一种实施方式中,所述确定单元501,用于:
响应于目标应用的启动操作,获取所述目标应用的配置信息;
基于所述目标应用的配置信息,确定所述目标应用启动所需的第一数据。
内存数据加载500能够实现图1~图4的内存数据加载方法实施例的方法,具体可参考图1~图4所示实施例的内存数据加载方法,不再赘述。
本发明实施例还提供了一种内存数据加载设备,图6为本申请实施例提供的内存数据加载设备的结构示意图。如图6所示,内存数据加载设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器601和存储器602,存储器602中可以存储有一个或一个以上存储应用程序或数据。其中,存储器602可以是短暂存储或持久存储。存储在存储器602的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对内存数据加载设备中的一系列计算机可执行指令。更进一步地,处理器601可以设置为与存储器602通信,在内存数据加载设备上执行存储器602中的一系列计算机可执行指令。内存数据加载设备还可以包括一个或一个以上电源603,一个或一个以上有线或无线网络接口604,一个或一个以上输入输出接口605,一个或一个以上键盘606等。
在一个具体的实施例中,内存数据加载设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现以下流程:
响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据;
加载所述第一数据至内存中;
获取第二数据的加载优先级;其中,所述第二数据为待加载数据中除所述第一数据以外的数据,所述待加载数据为所述目标应用运行时待加载的数据;
基于所述第二数据的加载优先级,分批加载所述第二数据至内存中。
可选地,所述计算机可执行指令被所述处理器执行时,
获取第二数据的加载优先级,包括:
获取预设时间段内所述目标应用的用户对所述第二数据的访问次数;
基于所述预设时间段内目标应用的用户对所述第二数据的访问次数,确定所述第二数据的权重;
基于所述第二数据的权重,确定所述第二数据的加载优先级。
基于所述第二数据的加载优先级,分批加载所述第二数据,包括:
基于所述第二数据的加载优先级,确定所述第二数据中的高频数据和低频数据;其中,所述高频数据为所述第二数据的加载优先级大于或等于预设等级的数据,所述低频数据为所述第二数据的加载优先级小于所述预设等级的数据;
加载所述高频数据;
在所述高频数据加载完成之后,加载所述低频数据。
加载所述第一数据至内存中,包括:
通过所述目标应用的主线程加载所述第一数据至内存中。
加载所述高频数据,包括:
通过所述目标应用的线程池加载所述高频数据至内存中。
获取预设时间段内所述目标应用的用户对所述第二数据的访问次数,包括:
在所述预设时间段内,通过预设访问次数记录算法来记录所述目标应用的用户对所述待加载数据的访问次数;
基于所述目标应用的用户对所述待加载数据的访问次数和所述第一数据的标识,获取所述第二数据的访问次数;
其中,所述预设访问次数记录算法包括下述至少一种:最近最少使用LRU算法和访问次数记录算法。
在基于所述第二数据的加载优先级,加载所述第二数据之后,所述方法还包括:
清除对所述待加载数据的加载优先级的标记;
在下一个所述预设时间段内,通过预设访问次数记录算法记录所述待加载数据的访问次数。
响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据,包括:
响应于目标应用的启动操作,获取所述目标应用的配置信息;
基于所述目标应用的配置信息,确定所述目标应用启动所需的第一数据。
本发明实施例中,能够首先响应于目标应用的启动操作,确定该目标应用启动所需的第一数据,然后加载该第一数据至内存中,再获取第二数据的加载优先级,其中该第二数据为待加载数据中除第一数据以外的数据,该待加载数据为目标应用运行时待加载的数据,最后能够基于第二数据的加载优先级,分批加载该第二数据至内存中。通过首先加载目标应用启动时所需的第一数据,然后基于剩余数据的优先级来分批加载剩余数据,避免在目标应用启动时就一次性加载目标应用的所有数据而导致目标应用启动时间过长,或者目标应用无响应的问题。
进一步地,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现以下流程:
响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据;
加载所述第一数据至内存中;
获取第二数据的加载优先级;其中,所述第二数据为待加载数据中除所述第一数据以外的数据,所述待加载数据为所述目标应用运行时待加载的数据;
基于所述第二数据的加载优先级,分批加载所述第二数据至内存中。
可选地,所述计算机可执行指令被处理器执行时,
获取第二数据的加载优先级,包括:
获取预设时间段内所述目标应用的用户对所述第二数据的访问次数;
基于所述预设时间段内目标应用的用户对所述第二数据的访问次数,确定所述第二数据的权重;
基于所述第二数据的权重,确定所述第二数据的加载优先级。
基于所述第二数据的加载优先级,分批加载所述第二数据,包括:
基于所述第二数据的加载优先级,确定所述第二数据中的高频数据和低频数据;其中,所述高频数据为所述第二数据的加载优先级大于或等于预设等级的数据,所述低频数据为所述第二数据的加载优先级小于所述预设等级的数据;
加载所述高频数据;
在所述高频数据加载完成之后,加载所述低频数据。
加载所述第一数据至内存中,包括:
通过所述目标应用的主线程加载所述第一数据至内存中。
加载所述高频数据,包括:
通过所述目标应用的线程池加载所述高频数据至内存中。
获取预设时间段内所述目标应用的用户对所述第二数据的访问次数,包括:
在所述预设时间段内,通过预设访问次数记录算法来记录所述目标应用的用户对所述待加载数据的访问次数;
基于所述目标应用的用户对所述待加载数据的访问次数和所述第一数据的标识,获取所述第二数据的访问次数;
其中,所述预设访问次数记录算法包括下述至少一种:最近最少使用LRU算法和访问次数记录算法。
在基于所述第二数据的加载优先级,加载所述第二数据之后,所述方法还包括:
清除对所述待加载数据的加载优先级的标记;
在下一个所述预设时间段内,通过预设访问次数记录算法记录所述待加载数据的访问次数。
响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据,包括:
响应于目标应用的启动操作,获取所述目标应用的配置信息;
基于所述目标应用的配置信息,确定所述目标应用启动所需的第一数据。
本发明实施例中,能够首先响应于目标应用的启动操作,确定该目标应用启动所需的第一数据,然后加载该第一数据至内存中,再获取第二数据的加载优先级,其中该第二数据为待加载数据中除第一数据以外的数据,该待加载数据为目标应用运行时待加载的数据,最后能够基于第二数据的加载优先级,分批加载该第二数据至内存中。通过首先加载目标应用启动时所需的第一数据,然后基于剩余数据的优先级来分批加载剩余数据,避免在目标应用启动时就一次性加载目标应用的所有数据而导致目标应用启动时间过长,或者目标应用无响应的问题。
其中,所述的计算机可读存储介质包括只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种内存数据加载方法,其特征在于,包括:
响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据;
加载所述第一数据至内存中;
获取第二数据的加载优先级;其中,所述第二数据为待加载数据中除所述第一数据以外的数据,所述待加载数据为所述目标应用运行时待加载的数据;
基于所述第二数据的加载优先级,分批加载所述第二数据至内存中。
2.如权利要求1所述的方法,其特征在于,获取第二数据的加载优先级,包括:
获取预设时间段内所述目标应用的用户对所述第二数据的访问次数;
基于所述预设时间段内目标应用的用户对所述第二数据的访问次数,确定所述第二数据的权重;
基于所述第二数据的权重,确定所述第二数据的加载优先级。
3.如权利要求2所述的方法,其特征在于,基于所述第二数据的加载优先级,分批加载所述第二数据,包括:
基于所述第二数据的加载优先级,确定所述第二数据中的高频数据和低频数据;其中,所述高频数据为所述第二数据的加载优先级大于或等于预设等级的数据,所述低频数据为所述第二数据的加载优先级小于所述预设等级的数据;
加载所述高频数据;
在所述高频数据加载完成之后,加载所述低频数据。
4.如权利要求1所述的方法,其特征在于,加载所述第一数据至内存中,包括:
通过所述目标应用的主线程加载所述第一数据至内存中。
5.如权利要求3所述的方法,其特征在于,加载所述高频数据,包括:
通过所述目标应用的线程池加载所述高频数据至内存中。
6.如权利要求2所述的方法,其特征在于,获取预设时间段内所述目标应用的用户对所述第二数据的访问次数,包括:
在所述预设时间段内,通过预设访问次数记录算法来记录所述目标应用的用户对所述待加载数据的访问次数;
基于所述目标应用的用户对所述待加载数据的访问次数和所述第一数据的标识,获取所述第二数据的访问次数;
其中,所述预设访问次数记录算法包括下述至少一种:最近最少使用LRU算法和访问次数记录算法。
7.如权利要求1所述的方法,其特征在于,在基于所述第二数据的加载优先级,加载所述第二数据之后,所述方法还包括:
清除对所述待加载数据的加载优先级的标记;
在下一个所述预设时间段内,通过预设访问次数记录算法记录所述待加载数据的访问次数。
8.如权利要求1~7中任一所述的方法,其特征在于,响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据,包括:
响应于目标应用的启动操作,获取所述目标应用的配置信息;
基于所述目标应用的配置信息,确定所述目标应用启动所需的第一数据。
9.一种内存数据加载装置,其特征在于,包括:
确定单元,用于响应于目标应用的启动操作,确定所述目标应用启动所需的第一数据;
第一加载单元,用于加载所述第一数据至内存中;
获取单元,用于获取第二数据的加载优先级;其中,所述第二数据为待加载数据中除所述第一数据以外的数据,所述待加载数据为所述目标应用运行时待加载的数据;
第二加载单元,用于基于所述第二数据的加载优先级,分批加载所述第二数据至内存中。
10.如权利要求9所述的装置,其特征在于,所述获取单元,用于:
获取预设时间段内所述目标应用的用户对所述第二数据的访问次数;
基于所述预设时间段内目标应用的用户对所述第二数据的访问次数,确定所述第二数据的权重;
基于所述第二数据的权重,确定所述第二数据的加载优先级。
11.如权利要求10所述的装置,其特征在于,所述第二加载单元,用于:
基于所述第二数据的加载优先级,确定所述第二数据中的高频数据和低频数据;其中,所述高频数据为所述第二数据的加载优先级大于或等于预设等级的数据,所述低频数据为所述第二数据的加载优先级小于所述预设等级的数据;
加载所述高频数据;
在所述高频数据加载完成之后,加载所述低频数据。
12.如权利要求10所述的装置,其特征在于,所述获取单元,用于:
在所述预设时间段内,通过预设访问次数记录算法来记录所述目标应用的用户对所述待加载数据的访问次数;
基于所述目标应用的用户对所述待加载数据的访问次数和所述第一数据的标识,获取所述第二数据的访问次数;
其中,所述预设访问次数记录算法包括下述至少一种:最近最少使用LRU算法和访问次数记录算法。
13.如权利要求9所述的装置,其特征在于,所述装置还包括:
清除单元,用于清除对所述待加载数据的加载优先级的标记;
记录单元,用于在下一个所述预设时间段内,通过预设访问次数记录算法记录所述待加载数据的访问次数。
14.如权利要求9~13任一所述的装置,其特征在于,所述确定单元,用于:
响应于目标应用的启动操作,获取所述目标应用的配置信息;
基于所述目标应用的配置信息,确定所述目标应用启动所需的第一数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811049750.2A CN109308200A (zh) | 2018-09-10 | 2018-09-10 | 一种内存数据加载方法、装置及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811049750.2A CN109308200A (zh) | 2018-09-10 | 2018-09-10 | 一种内存数据加载方法、装置及其设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109308200A true CN109308200A (zh) | 2019-02-05 |
Family
ID=65225009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811049750.2A Pending CN109308200A (zh) | 2018-09-10 | 2018-09-10 | 一种内存数据加载方法、装置及其设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109308200A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986131A (zh) * | 2021-10-27 | 2022-01-28 | 致真存储(北京)科技有限公司 | 一种双mram的mcu及缓存数据的方法 |
CN114510289A (zh) * | 2022-01-26 | 2022-05-17 | 无锡祥生医疗科技股份有限公司 | 性能调优方法、超声设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2645990A1 (en) * | 2007-12-20 | 2009-06-20 | Bce Inc. | Contact-less tag with signature, and applications thereof |
CN101833464A (zh) * | 2010-04-16 | 2010-09-15 | 深圳市五巨科技有限公司 | 一种移动终端分段加载应用程序的方法及装置 |
CN102821113A (zh) * | 2011-06-07 | 2012-12-12 | 阿里巴巴集团控股有限公司 | 缓存方法及系统 |
CN104346194A (zh) * | 2014-04-18 | 2015-02-11 | 腾讯科技(深圳)有限公司 | 一种启动文件加载方法、装置及电子设备 |
CN104348677A (zh) * | 2013-08-05 | 2015-02-11 | 华为技术有限公司 | 一种深度报文检测方法、设备及协处理器 |
CN105354093A (zh) * | 2015-12-09 | 2016-02-24 | 广东欧珀移动通信有限公司 | 内存管理方法及移动终端 |
CN105528225A (zh) * | 2015-11-30 | 2016-04-27 | 用友优普信息技术有限公司 | 应用程序的加载方法及加载装置 |
-
2018
- 2018-09-10 CN CN201811049750.2A patent/CN109308200A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2645990A1 (en) * | 2007-12-20 | 2009-06-20 | Bce Inc. | Contact-less tag with signature, and applications thereof |
CN101833464A (zh) * | 2010-04-16 | 2010-09-15 | 深圳市五巨科技有限公司 | 一种移动终端分段加载应用程序的方法及装置 |
CN102821113A (zh) * | 2011-06-07 | 2012-12-12 | 阿里巴巴集团控股有限公司 | 缓存方法及系统 |
CN104348677A (zh) * | 2013-08-05 | 2015-02-11 | 华为技术有限公司 | 一种深度报文检测方法、设备及协处理器 |
CN104346194A (zh) * | 2014-04-18 | 2015-02-11 | 腾讯科技(深圳)有限公司 | 一种启动文件加载方法、装置及电子设备 |
CN105528225A (zh) * | 2015-11-30 | 2016-04-27 | 用友优普信息技术有限公司 | 应用程序的加载方法及加载装置 |
CN105354093A (zh) * | 2015-12-09 | 2016-02-24 | 广东欧珀移动通信有限公司 | 内存管理方法及移动终端 |
Non-Patent Citations (1)
Title |
---|
潘曦,闫建华,郑建君编著: "《普通高等教育"十三五"规划教材;卓越工程师培养计划系列教材:数字系统与微处理器》", 31 July 2018, 北京理工大学出版社 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986131A (zh) * | 2021-10-27 | 2022-01-28 | 致真存储(北京)科技有限公司 | 一种双mram的mcu及缓存数据的方法 |
CN114510289A (zh) * | 2022-01-26 | 2022-05-17 | 无锡祥生医疗科技股份有限公司 | 性能调优方法、超声设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105205014B (zh) | 一种数据存储方法和装置 | |
US8364909B2 (en) | Determining a conflict in accessing shared resources using a reduced number of cycles | |
TW201118724A (en) | Managing and implementing metadata in central processing unit using register extensions | |
CN104081449A (zh) | 用于图形并行处理单元的缓冲器管理 | |
CN110335635A (zh) | 用来管理一记忆装置的方法以及记忆装置与控制器 | |
CN105393228B (zh) | 读写闪存中数据的方法、装置及用户设备 | |
US20180107590A1 (en) | Information processing apparatus | |
WO2023000536A1 (zh) | 一种数据处理方法、系统、设备以及介质 | |
CN109308200A (zh) | 一种内存数据加载方法、装置及其设备 | |
KR20200060245A (ko) | 데이터 액세스 방법, 장치, 기기 및 저장 매체 | |
CN110837480A (zh) | 缓存数据的处理方法及装置、计算机存储介质、电子设备 | |
CN109032511A (zh) | 一种数据存储方法、服务器及存储介质 | |
CN114493856A (zh) | 用于处理数据的方法、系统、装置和介质 | |
CN114385089A (zh) | 一种基于交叉编址的动态bank存储方法、装置及电子设备 | |
CN104484136B (zh) | 一种可支撑高并发内存数据的方法 | |
CN113312259A (zh) | 一种接口测试方法及装置 | |
CN116167310A (zh) | 一种验证多核心处理器缓存一致性的方法及装置 | |
US20090313449A1 (en) | eXtreme Virtual Memory | |
WO2023124304A1 (zh) | 芯片的缓存系统、数据处理方法、设备、存储介质及芯片 | |
CN109491785A (zh) | 内存访问调度方法、装置及设备 | |
CN111552652B (zh) | 基于人工智能芯片的数据处理方法、装置和存储介质 | |
CN108762822A (zh) | 一种数据加载方法及装置 | |
CN114048847A (zh) | 一种图神经网络数据缓存方法、装置、设备及存储介质 | |
CN112148486A (zh) | 内存页面管理方法、装置、设备及可读存储介质 | |
CN110059115A (zh) | 一种数据读取方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190205 |