一种共享资源加载方法、终端及计算机可读存储介质与流程

文档序号:12034384阅读:133来源:国知局
本发明涉及信息
技术领域
:,更具体地说,涉及一种共享资源加载方法、终端及计算机可读存储介质。
背景技术
::随着终端技术的不断发展,随着终端技术的不断发展,终端已经成为人们日常生活工作的必需品,而随着人们对于终端的依赖程度的不断增加,人们对于终端的性能要求也越来越高。对于终端的性能而言,降低内存消耗以及提升终端运行流畅性无疑是最能引起用户兴趣、同时也是终端厂商着重强调的优化重点之一。而为降低内存消耗以及提升终端运行流畅性,终端厂商往往利用孵化进程预加载最大化的共享资源,参见图1所示,孵化进程预先加载了所有的共享资源,此后孵化进程在建立应用进程时,直接调用所需的预加载的共享资源,再对应加载私有资源即可,这就实现了应用本身的体积压缩,并保证了应用的启动速度或者运行速度。但是,现有方法加载共享资源时,孵化进程在终端启动过程中就会将所有的共享资源一起加载进内存,这就导致内存的初始消耗量极其庞大,并严重影响终端的启动速度。而且由于应用的不断多样化,应用需求的不断增大,厂商预设的共享资源也会不断丰富,这就使得预加载的共享资源量会随着版本的更新迭代不断的增加,从而使得终端内存的初始消耗量越来越庞大,而终端的启动速度也越来越缓慢,严重影响用户体验。技术实现要素:本发明要解决的技术问题在于:现有方法加载共享资源时,孵化进程在终端启动过程中会将所有的共享资源一起加载进内存,导致内存的初始消耗量极其庞大,并严重影响终端的启动速度,降低了用户体验。针对该技术问题,本发明提供了一种共享资源加载方法、终端及计算机可读存储介质。为解决上述技术问题,本发明提供一种共享资源加载方法,所述共享资源加载方法包括:在调用孵化进程创建子进程时,根据所述子进程的创建需求确定创建该子进程所需的所有资源;根据终端当前可供调用的所有共享资源和创建该子进程所需的所有资源确定所述子进程创建所需的共享资源,并对所述子进程创建所需的共享资源进行加载;所述终端当前可供调用的所有共享资源由所述孵化进程在初始化过程中获取并解析预加载的配置文件确定。进一步地,所述共享资源加载方法还包括:检测所述加载的共享资源是否为待释放资源;若是,将所述共享资源进行释放。进一步地,所述检测所述加载的共享资源是否为待释放资源的步骤包括:判断所述共享资源是否属于预设的需释放资源;若是,判定所述共享资源为待释放资源;或,基于所述共享资源的历史请求情况对所述共享资源进行评价,判断所述评价是否低于预设评价阈值;若是,判定所述共享资源为待释放资源。进一步地,所述基于所述共享资源的历史请求情况对所述共享资源进行评价的步骤包括:根据所述共享资源的历史被请求次数和/或历史被占用时间对所述各共享资源进行评价。进一步地,所述共享资源加载方法还包括:判断资源释放条件是否被触发;若是,将所述共享资源进行释放。进一步地,本发明提供了一种终端,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的共享资源加载程序;所述处理器运行所述共享资源加载程序以执行下述操作:在调用孵化进程创建子进程时,根据所述子进程的创建需求确定创建该子进程所需的所有资源;根据终端当前可供调用的所有共享资源和创建该子进程所需的所有资源确定所述子进程创建所需的共享资源,并对所述子进程创建所需的共享资源进行加载;所述终端当前可供调用的所有共享资源由所述孵化进程在初始化过程中获取并解析预加载的配置文件确定。进一步地,所述处理器运行所述共享资源加载程序还执行下述操作:检测所述加载的共享资源是否为待释放资源;若是,将所述共享资源进行释放。进一步地,所述处理器运行所述共享资源加载程序,检测所述加载的共享资源是否为待释放资源包括:判断所述共享资源是否属于预设的需释放资源;若是,判定所述共享资源为待释放资源;或,基于所述共享资源的历史请求情况对所述共享资源进行评价,判断所述评价是否低于预设评价阈值;若是,判定所述共享资源为待释放资源。进一步地,所述处理器运行所述共享资源加载程序,基于所述共享资源的历史请求情况对所述共享资源进行评价包括:根据所述共享资源的历史被请求次数和/或历史被占用时间对所述各共享资源进行评价。进一步地,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有共享资源加载程序,所述共享资源加载程序被处理器执行时实现上述共享资源加载方法的步骤。有益效果本发明提供的一种共享资源加载方法、终端及计算机可读存储介质,通过在处理器调用孵化进程创建子进程时,根据子进程的创建需求确定创建该子进程所需的所有资源,再根据终端当前可供调用的所有共享资源和创建该子进程所需的所有资源确定该子进程创建所需的共享资源,并将创建该子进程需要的共享资源加载到内存中。这样,在子进程加载之前,也即终端启动的过程中,不需要耗费终端内存来加载大量的共享资源。终端在子进程创建的过程中,再根据各子进程的实际创建需求,加载其需要的共享资源,避免在子进程创建之前,耗费内存加载许多暂时无使用需求的共享资源,造成内存资源浪费的问题。因此,本发明提供的共享资源加载方法,不仅提升了终端启动速度,提升了用户体验,还在一定程度上降低了内存占用,有利于资源的优化配置。附图说明下面将结合附图及实施例对本发明作进一步说明,附图中:图1为本发明
背景技术
:提供的共享资源调用过程中的进程结构示意图;图2为实现本发明各个实施例一个可选的终端的硬件结构示意图;图3为本发明第一实施例提供的一种共享资源加载方法流程示意图;图4为本发明第一实施例提供的一种更具体的共享资源加载方法流程示意图;图5为本发明第一实施例提供的一种共享资源界面显示图;图6为本发明第一实施例提供的一种用户选择确认过程的交互图;图7为本发明第一实施例提供的一种需释放资源列表界面显示图;图8为本发明第二实施例提供的一种具体的共享资源加载方法实施流程图;图9为本发明第三实施例提供的一种终端结构示意图;图10为本发明第四实施例提供的一种处理器结构示意图;具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(personaldigitalassistant,pda)、便捷式媒体播放器(portablemediaplayer,pmp)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字tv、台式计算机等固定终端。后续描述中将以移动终端为例进行说明,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。请参阅图2,其为实现本发明各个实施例的一种移动终端的硬件结构示意图,该移动终端200可以包括:rf(radiofrequency,射频)单元201、wifi模块202、音频输出单元203、a/v(音频/视频)输入单元204、传感器205、显示单元206、用户输入单元207、接口单元208、存储器209、处理器210、以及电源211等部件。本领域技术人员可以理解,图2中示出的移动终端结构并不构成对移动终端的限定,移动终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。下面结合图2对移动终端的各个部件进行具体的介绍:射频单元201可用于收发信息或通话过程中,信号的接收和发送,具体的,将基站的下行信息接收后,给处理器210处理;另外,将上行的数据发送给基站。此外,射频单元201还可以通过无线通信与网络和其他设备通信。移动终端通过wifi模块202可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图2示出了wifi模块202,但是可以理解的是,其并不属于移动终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。音频输出单元203可以在移动终端200处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将射频单元201或wifi模块202接收的或者在存储器209中存储的音频数据转换成音频信号并且输出为声音。a/v输入单元204用于接收音频或视频信号。a/v输入单元204可以包括图形处理器2041和麦克风2042,图形处理器2041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。麦克风2042可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风2042接收声音(音频数据),并且能够将这样的声音处理为音频数据。移动终端200还包括至少一种传感器205,比如光传感器、运动传感器、指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等。显示单元206用于显示由用户输入的信息或提供给用户的信息。显示单元206可包括显示面板2061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板2061。用户输入单元207可用于接收输入的数字或字符信息,以及产生与移动终端的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元207可包括触控面板2071以及其他输入设备2072。触控面板2071,也称为触控屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板2071上或在触控面板2071附近的操作),并根据预先设定的程式驱动相应的连接装置。除了触控面板2071,用户输入单元207还可以包括其他输入设备2072。具体地,其他输入设备2072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种,具体此处不做限定。进一步的,触控面板2071可覆盖显示面板2061,当触控面板2071检测到在其上或附近的触摸操作后,传送给处理器210以确定触摸事件的类型,随后处理器210根据触摸事件的类型在显示面板2061上提供相应的视觉输出。虽然在图2中,触控面板2071与显示面板2061是作为两个独立的部件来实现移动终端的输入和输出功能,但是在某些实施例中,可以将触控面板2071与显示面板2061集成而实现移动终端的输入和输出功能,具体此处不做限定。接口单元208用作至少一个外部装置与移动终端200连接可以通过的接口。接口单元208可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端200内的一个或多个元件或者可以用于在移动终端200和外部装置之间传输数据。存储器209可用于存储软件程序以及各种数据。存储器209可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器209可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器210是移动终端的控制中心,利用各种接口和线路连接整个移动终端的各个部分,通过运行或执行存储在存储器209内的软件程序和/或模块,以及调用存储在存储器209内的数据,执行移动终端的各种功能和处理数据,从而对移动终端进行整体监控。处理器210可包括一个或多个处理单元;优选的,处理器210可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器210中。移动终端200还可以包括给各个部件供电的电源211(比如电池),优选的,电源211可以通过电源管理系统与处理器210逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。尽管图2未示出,移动终端200还可以包括蓝牙模块等,在此不再赘述。以下通过具体实施例进行详细说明。第一实施例为了避免对内存产生庞大的初始消耗量,同时提升终端的启动速度,本发明提供了一种动态加载共享资源的共享资源加载方法。参照图3,图3为本发明第一实施例提供的共享资源加载方法流程示意图,包括:s301:在调用孵化进程创建子进程时,根据所述子进程的创建需求确定创建该子进程所需的所有资源;本实施例中,终端在需要建立某一应用进程时,处理器即会调用孵化进程来创建相应的应用进程(即子进程),此时,孵化进程即会检测创建相应的子进程所需要的所有资源有哪些。s302:根据终端当前可供调用的所有共享资源和创建该子进程所需的所有资源确定该子进程创建所需的共享资源;本实施例中,终端在开机之后即会启动孵化进程,并预加载配置文件,以实现终端系统的加载、启动。本实施例中,在终端开机之后,孵化进程需要进行初始化,此时孵化进程即会获取并解析预加载的配置文件。本实施例中预加载的配置文件中至少包含有可完整表征所有共享资源的信息。应当理解的是,本实施例中,孵化进程在解析预加载的配置文件之后,由于配置文件中含有可完整表征所有共享资源的信息,故孵化进程即可根据解析结果确定出终端当前可供调用的共享资源具体有哪些。应当理解的是,孵化进程在解析预加载的配置文件以确定出终端当前可供调用的共享资源的过程可仅在孵化进程进行初始化时进行,也可以在每一次创建子进程之前都进行。本实施例中,孵化进程可以根据解析结果将各共享资源的条目记录下来并保存。应当理解的是,本实施例中记录保存的条目具备指向各共享资源存储位置的功能,即本实施例中记录保存的条目包含有对应共享资源的位置信息,这样,在后续的加载过程中,根据保存的各共享资源的条目即可对应找到对应的共享资源进行加载。应当理解的是,本实施例中记录并保存的各共享资源的条目可以是各共享资源的名称等。还应当理解的是,本实施例中记录并保存的各共享资源的条目具体可以通过图表等形式进行保存,以供孵化进程后续调用。应当理解的是,孵化进程根据终端当前可供调用的所有共享资源和创建该子进程所需的所有资源确定该子进程创建所需的共享资源时,会记录所需要的共享资源对应的条目名,值得注意的是,这里的条目名应当与之前记录保存的各共享资源的条目中的条目名一致,例如之前记录保存的各共享资源的条目为各共享资源的名称,则孵化进程记录的子进程创建所需的共享资源对应的条目名也应当为所需共享资源的名称。s303:对子进程创建所需的共享资源进行加载。本实施例中,孵化进程在确定出子进程创建所需的共享资源有哪些之后,根据之前记录保存的各共享资源的条目即可找到对应所需的共享资源,从而将对应的共享资源加载到内存中。本实施例中,孵化进程在创建相应的子进程时,可以对内存中已加载的共享资源进行检测,判断创建相应的子进程所需的共享资源是否在内存中已经存在,对于已经存在的共享资源即不再重复加载。应当理解的是,本实施例中创建子进程所需的共享资源可能是一个,也可能是一个以上,对于所需的共享资源为一个以上时,若其中部分共享资源内存中已经存在,则孵化进程仅获取剩余部分的共享资源条目名,也即孵化进程仅加载内存中不存在的共享资源。应当理解的是,共享资源是由厂商预先设置好的,其是针对所有应用而设置的。但是在用户实际操作过程中,用户实际上并不需要用到厂商预先设置好的所有的共享资源,或者对某些共享资源的需求并不高。因此,为进一步节约内存,避免大量的非必须的共享资源占用宝贵的内存资源,本实施例中提供的共享资源加载方法还包括,参见图4,在步骤s303之后还包括:s304:检测加载的共享资源是否为待释放资源;若是,转至s305;否则结束。本实施例中,检测加载的共享资源是否为待释放资源的一种具体方式是:判断加载的共享资源是否属于预设的需释放资源;若是,判定该共享资源为待释放资源。具体的,可以在终端内预先设定出部分共享资源为需释放资源,该部分资源可以为共享资源中利用率较低的部分共享资源。本实施例中,需释放资源在终端中的设定方式包括:将设定的需释放资源或其对应具备指向功能的标识通过图表等形式保存在终端中,例如参见下表一的形式,此时终端根据加载的共享资源检测其是否在表一中,若是,则加载的共享资源属于设定的需释放资源,为待释放资源,需进行释放以减少对内存的占用;表一需释放资源共享资源a共享资源b共享资源c…或将设定的需释放资源进行单独存储,例如将需释放资源保存在对应的一个或多个存储区域中,应当理解的是,这一个或多个存储区域中保存的共享资源仅为需释放资源,此时终端根据加载的共享资源的源位置即可确定加载的共享资源是否属于设定的需释放资源;或在之前记录保存的共享资源条目中,对设定的需释放资源的条目进行标记,例如在需释放资源的条目后加一标记符等,此时终端在加载的共享资源时,根据其条目中是否有标记符即可确定加载的共享资源是否属于设定的需释放资源。应当理解的是,在本实施例中,还可以设置操作界面,用户可以通过操作界面自主设置或更改共享资源中的哪部分共享资源为需释放资源,例如,参见图5、图6和图7所示。图5为可设置为需释放资源的共享资源界面显示图,图6为用户选择确认过程的交互图,图7为加入“共享资源a”后的需释放资源列表界面显示图。还应当理解的是,在本实施例中,终端还可以自动检测对各共享资源的利用率,从而自动更新设定的需释放资源。本实施例中,检测加载的共享资源是否为待释放资源的另一种具体方式是:基于共享资源的历史请求情况对共享资源进行评价,判断评价是否低于预设评价阈值;若是,判定该共享资源为待释放资源。应当理解的是,本实施例中用来对共享资源进行评价的历史请求情况可以是该共享资源某一时间段内的历史请求情况,例如根据某一共享资源最近两天的请求情况来对该共享资源进行评价;同样应当理解的是,本实施例中也可以根据某一共享资源所有的历史请求情况来对该共享资源进行评价。本实施例中的历史请求情况可以是共享资源的历史被请求次数,或共享资源的历史被占用时间,或两者的结合。应当理解的是,本实施例中共享资源的历史被占用时间是指该共享资源历史被进程调用占用的时间。值得注意的是,本实施例中可以直接根据共享资源的历史被请求次数和/或历史被占用时间来进行评价,即共享资源的历史被请求次数和/或历史被占用时间即作为评价值,那么此时预设的评价阈值即为对应的请求次数阈值和/或被占用时间阈值。例如,设终端是直接根据共享资源的历史被请求次数进行评价,某共享资源的历史被请求次数为k次,评价阈值为m次(m为大于等于1的正自然数),若k<m,则该共享资源即为待释放资源,在之后需将其从内存中释放。又例如,设终端是直接根据共享资源的历史被占用时间进行评价,某共享资源的历史被占用时间为j分钟,评价阈值为n分钟(n为大于等于1的正自然数),若j<n,则该共享资源即为待释放资源,在之后需将其从内存中释放。再例如,设终端是直接根据共享资源的历史被请求次数和被占用时间一起进行评价,设某共享资源的历史被请求次数为k次,历史被占用时间为j分钟,同时设置评价阈值为m次和n分钟,然后分别将待评价的共享资源的历史被请求次数和被占用时间分别与m和n进行比较,此时一种可行的判定规则是:若k<m或j<n,则判定该共享资源为待释放资源;另一种可行的判定规则是:若k<m且j<n,则判定该共享资源为待释放资源。还值得注意的是,本实施例中还可以根据共享资源的历史被请求次数和/或历史被占用时间按照预定的计算规则通过评分、或确定使用等级、或确定使用星级等方式来对共享资源进行评价。此时,预设的评价阈值即为对应的评分阈值,或等级阈值,或星级阈值。例如,设终端是根据共享资源的历史被请求次数和被占用时间一起来对该共享资源进行评分的,一种可行的评分计算规则为通过设置阈值次数m和阈值时间n来进行计算评分,例如设某共享资源的历史被请求次数和被占用时间分别为k和j,通过公式(k-m)/m+(j-n)/n得到评分。应当理解的是,前述评分方式仅为本实施例提供的一种计算规则示例,不代表本实施例仅能采用该种计算方法,事实上只要是通过共享资源的历史被请求次数和/或被占用时间可以计算得到的表征该共享资源被利用情况的评分的计算规则均可被本实施例采用。应当理解的是,对于仅根据共享资源的历史被请求次数或历史被占用时间来对该共享资源进行评分的,其评分规则可以参见上述规则进行拆分得到。本实施例中,评价阈值可以为工程师设定的经验值,也可以让用户在终端上自行设置。应当理解的是,本实施例中,在判定共享资源是否为待释放资源时,可以设置判别触发条件,在判别触发条件被触发时对加载的共享资源进行判定。本实施例中,判别触发条件可以为内存中新加载的共享资源个数,例如,在内存中新加载的共享资源达到10个时,对加载的共享资源进行判定;判别触发条件也可以为设定的一判别周期,例如,终端可以设置每隔两分钟就对加载的共享资源进行判别。应当理解的是,本实施例中,每一次进行判别的可以仅为新加载到内存中的共享资源,而对之前已经判别过的共享资源不再进行判别,从而节省处理器资源,例如,在采用第一种检测加载的共享资源是否为待释放资源的方式时,每一次即可仅对新加载到内存中的共享资源进行判别。事实上,由于随着时间的推移,某些之前被判别为非待释放资源的共享资源可能长时间未被调用,其对应的评价值可能发生了改变,本实施例中,还可以在每一次进行判别时,对内存中加载的所有共享资源都进行再一次评价判别,从而不断更新内存中保存的共享资源,保证内存中的共享资源为用户常用的共享资源。例如,在采用第二种检测加载的共享资源是否为待释放资源的方式时,每一次即可对加载到内存中的所有共享资源都进行判别。s305:将该共享资源进行释放。本实施例中,可以设置资源释放条件,在资源释放条件被触发时,将内存中的待释放资源进行释放。例如,在终端结束掉某一占用待释放资源的子进程时,将内存中的待释放资源进行释放;又例如,在检测到内存中的待释放资源数目达到预设值时,将内存中的待释放资源进行释放;再例如,预先设定释放周期,在预设的释放周期到达时,将内存中的待释放资源进行一次释放。应当理解的是,本实施例中,可能同时进行多个进程,此时可能存在再资源释放条件被触发时仍有部分待释放资源被占用,此时可以不释放该部分被占用的进程,而是在占用该待释放资源的进程结束时进行自动释放,或者在占用该待释放资源的进程结束后的下一次资源释放条件被触发时进行释放。本实施例中,也可以不设置资源释放条件,即在每一次检测出待释放资源之后,只要该待释放资源未被占用,即将该待释放资源进行释放。本实施例中,在终端关机时,可以将内存中已加载的且不需释放的共享资源在硬盘等只读存储器中进行单独保存,或将内存中已加载的且不需释放的共享资源的条目及其存储位置指向关系保存在硬盘等只读存储器中。这样,在用户再次开机时,终端在孵化进程的初始化阶段即可对应将内存中原有的已加载的且不需释放的共享资源重新加载进内存中。应当理解的是,在终端关机时,也可不进行相应保存,这样终端在关机后内存中的内容全部释放,再次开启终端时内存中不加载任何共享资源,在孵化进程创建子进程的过程中再次动态加载共享资源到内存中。应当理解的是,本实施例中的各个步骤可以由如图2所示的终端来独立实现,具体的,通过在存储器209内存储实现上述各个步骤的共享资源加载程序,并交由处理器210执行,由处理器210来获取并解析预加载的配置文件,并根据解析结果确定终端当前可供调用的共享资源;同时,处理器210还用于在调用孵化进程创建子进程时,根据子进程的创建需求将需要的共享资源加载到存储器209中的内存设备中。此外,处理器210还会运行存储器209内存储的共享资源加载程序以检测加载的共享资源是否为待释放资源,并对检测到的待释放资源进行释放。应当理解的是,本实施例中,还提供一种计算机可读存储介质,如软盘、光盘、硬盘、闪存、u盘、cf卡、sd卡、mmc卡等,在该计算机可读存储介质中存储有实现上述各个步骤的共享资源加载程序,终端的处理器可以读取并执行该计算机可读存储介质中存储的共享资源加载程序,从而实现上述共享资源加载方法的各个步骤。本实施例提供的共享资源加载方法,通过在处理器调用孵化进程创建子进程时,根据子进程的创建需求确定创建该子进程所需的所有资源,再根据终端当前可供调用的所有共享资源和创建该子进程所需的所有资源确定该子进程创建所需的共享资源,并将创建该子进程需要的共享资源加载到内存中。这样,在子进程加载之前,也即终端启动的过程中,不需要耗费终端内存来加载大量的共享资源。终端在子进程创建的过程中,再根据各子进程的实际创建需求,加载其需要的共享资源,避免在子进程创建之前,耗费内存加载许多暂时无使用需求的共享资源,造成内存资源浪费的问题。因此,本实施例提供的共享资源加载方法,不仅提升了终端启动速度,提升了用户体验,还在一定程度上降低了内存占用,有利于资源的优化配置。第二实施例本实施例在第一实施例的基础上,以根据共享资源的历史被请求次数和历史被占用时间一起按照预定的计算规则对加载到内存中的共享资源进行评分的情况为例,对本发明作进一步的示例说明。参见图8,图8为本发明第二实施例提供的一种具体的共享资源加载方法实施流程图,包括:s801:获取并解析预加载的配置文件,根据解析结果记录保存终端中所有共享资源的条目;该过程可以在启动孵化进程之前进行,也可以在孵化进行启动过程中进行,事实上,该步骤为孵化进程创建子进程前的准备步骤。s802:在调用孵化进程创建子进程时,根据子进程的创建需求,调用保存的共享资源条目,加载子进程需要的共享资源到内存中;在处理器调用孵化进程创建子进程时,处理器会获取子进程的创建需求,该创建需求中包含有所需的共享资源信息,由此处理器调用保存的共享资源条目即可找到创建该子进程所需的共享资源,并将之加载到内存中。在处理器调用保存的共享资源条目找到创建该子进程所需的共享资源,并将之加载到内存中之前,还会检测创建该子进程所需的共享资源在内存中是否存在或部分存在,再根据检测结果调用保存的共享资源条目,找到内存中当前不存在的那部分创建该子进程所需的共享资源,并将之加载到内存中。若创建该子进程所需的共享资源在内存中都已存在,则不需要再调用保存的共享资源条目并加载共享资源。s803:根据共享资源的历史被请求次数和历史被占用时间一起按照预定的计算规则对内存中的共享资源进行动态评分;此处进行评分的对象是所有加载到内存中的共享资源,也即会对所有已加载到内存中的共享资源都进行评分。对内存中的共享资源进行的评分是动态的,也即每隔一段时间就会进行一次评分,例如每隔两分钟就进行一次评分。s804:判断共享资源的评分是否小于预设阈值;若是,转至s805;否则,结束;用于进行判别比较的预设阈值可以是工程师通过经验值进行设定的。s805:将该共享资源进行释放。具体的,在占用该共享资源的进程结束或解除对该共享资源的占用时,即可对该共享资源进行释放。应当理解的是,本实施例中的共享资源可以是创建应用进程(即子进程)所需的资源,如某部分程序等;也可以是创建好应用进程之后其需要调用的资源,如某些图像数据、音频数据等。本实施例提供的共享资源加载方法,通过在应用进程的创建过程中,动态地加载共享资源,并引用评分机制,动态地将加载到内存中的不重要的共享资源进行释放,实现了对共享资源的选择性加载,避免了大量的非必须资源占用宝贵的内存资源的问题,使用户的使用体验得到了极大的提升。第三实施例为了避免对内存产生庞大的初始消耗量,同时提升终端的启动速度,本发明提供了一种可动态加载共享资源的终端。参照图9,图9为本发明第三实施例提供的一种终端结构示意图,包括:存储器91、处理器92和通信总线93。其中:通信总线93用于实现处理器92和存储器91之间的连接通信;存储器91中存储有可在处理器92上运行的共享资源加载程序;处理器92可以运行该共享资源加载程序以执行下述操作:在调用孵化进程创建子进程时,根据所述子进程的创建需求确定创建该子进程所需的所有资源;根据终端当前可供调用的所有共享资源和创建该子进程所需的所有资源确定该子进程创建所需的共享资源,并对该子进程创建所需的共享资源进行加载。在本实施例中,终端在需要建立某一应用进程时,处理器92即会调用孵化进程来创建相应的应用进程(即子进程),此时,孵化进程即会检测创建相应的子进程所需要的所有资源有哪些。应当理解的是,本实施例中,终端在开机之后处理器92即会启动孵化进程,并预加载配置文件,以实现终端系统的加载、启动。本实施例中,在终端开机之后,孵化进程需要进行初始化,此时孵化进程即会获取并解析预加载的配置文件。本实施例中预加载的配置文件中至少包含有可完整表征所有共享资源的信息。应当理解的是,本实施例中,处理器92在解析预加载的配置文件之后,由于配置文件中含有可完整表征所有共享资源的信息,故处理器92即可根据解析结果确定终端当前可供调用的共享资源具体有哪些。应当理解的是,处理器92在解析预加载的配置文件以确定出终端当前可供调用的共享资源的过程可仅在孵化进程进行初始化时进行,也可以在每一次创建子进程之前都进行。本实施例中,处理器92可以根据解析结果将各共享资源的条目记录下来并保存到存储器91中。应当理解的是,本实施例中记录保存的条目具备指向各共享资源存储位置的功能,即本实施例中记录保存的条目包含有对应共享资源的位置信息,这样,在后续的加载过程中,处理器92根据保存的各共享资源的条目即可对应找到存储在存储器91中的对应共享资源进行加载。应当理解的是,本实施例中记录并保存的各共享资源的条目可以是各共享资源的名称等。还应当理解的是,本实施例中记录并保存的各共享资源的条目具体可以通过图表等形式进行保存,以供处理器92后续调用。应当理解的是,处理器92根据终端当前可供调用的所有共享资源和创建该子进程所需的所有资源确定该子进程创建所需的共享资源时,会记录所需要的共享资源对应的条目名,值得注意的是,这里的条目名应当与之前记录保存的各共享资源的条目中的条目名一致,例如处理器92之前记录保存的各共享资源的条目为各共享资源的名称,则处理器92记录的子进程创建所需的共享资源对应的条目名也应当为所需共享资源的名称。本实施例中,处理器92在确定出子进程创建所需的共享资源有哪些之后,根据之前记录保存的各共享资源的条目即可找到对应所需的共享资源的存储位置,从而将对应的共享资源加载到内存中。值得注意的是,本实施例中,处理器92在调用孵化进程创建相应的子进程时,会对内存中已加载的共享资源进行检测,判断创建相应的子进程所需的共享资源是否在内存中已经存在,对于已经存在的共享资源即不再重复加载。应当理解的是,本实施例中创建子进程所需的共享资源可能是一个,也可能是一个以上,对于所需的共享资源为一个以上时,若其中部分共享资源内存中已经存在,则处理器92仅获取剩余部分的共享资源条目名,也即处理器92仅加载内存中不存在的共享资源。应当理解的是,共享资源是由厂商预先设置好的,其是针对所有应用而设置的。但是在用户实际操作过程中,用户实际上并不需要用到厂商预先设置好的所有的共享资源,或者对某些共享资源的需求并不高。因此,为进一步节约内存,避免大量的非必须的共享资源占用宝贵的内存资源,本实施例中,处理器92运行共享资源加载程序还执行下述操作:检测加载的共享资源是否为待释放资源;若是,将共享资源进行释放。本实施例中,处理器92检测加载的共享资源是否为待释放资源的一种具体方式是:处理器92判断加载的共享资源是否属于预设的需释放资源;若是,判定该共享资源为待释放资源。具体的,可以在终端内预先设定出部分共享资源为需释放资源,该部分资源可以为共享资源中利用率较低的部分共享资源。本实施例中,需释放资源在终端中的设定方式包括:将设定的需释放资源或其对应具备指向功能的标识通过图表等形式保存在终端中,此时处理器92根据加载的共享资源检测其是否在保存的图表中,若是,处理器92判定加载的共享资源属于设定的需释放资源,为待释放资源,需进行释放以减少对内存的占用;或将设定的需释放资源进行单独存储,例如将需释放资源保存在存储器91对应的一个或多个存储区域中,应当理解的是,这一个或多个存储区域中保存的共享资源仅为需释放资源,此时处理器92根据加载的共享资源的源位置即可确定加载的共享资源是否属于设定的需释放资源;或在之前记录保存的共享资源条目中,对设定的需释放资源的条目进行标记,例如在需释放资源的条目后加一标记符等,此时处理器92在加载的共享资源时,根据其条目中是否有标记符即可确定加载的共享资源是否属于设定的需释放资源。应当理解的是,在本实施例中,还可以设置操作界面,用户可以通过操作界面自主设置或更改共享资源中的哪部分共享资源为需释放资源。还应当理解的是,在本实施例中,终端还可以自动检测对各共享资源的利用率,从而自动更新设定的需释放资源。本实施例中,处理器92检测加载的共享资源是否为待释放资源的另一种具体方式是:基于共享资源的历史请求情况对共享资源进行评价,判断评价是否低于预设评价阈值;若是,判定该共享资源为待释放资源。应当理解的是,本实施例中用来对共享资源进行评价的历史请求情况可以是该共享资源某一时间段内的历史请求情况,例如处理器92根据某一共享资源最近五天的请求情况来对该共享资源进行评价;同样应当理解的是,本实施例中,处理器92也可以根据某一共享资源所有的历史请求情况来对该共享资源进行评价。本实施例中的历史请求情况可以是共享资源的历史被请求次数,或共享资源的历史被占用时间,或两者的结合。应当理解的是,本实施例中共享资源的历史被占用时间是指该共享资源历史被进程调用占用的时间。值得注意的是,本实施例中处理器92可以直接根据共享资源的历史被请求次数和/或历史被占用时间来进行评价,即共享资源的历史被请求次数和/或历史被占用时间即作为评价值,那么此时预设的评价阈值即为对应的请求次数阈值和/或被占用时间阈值。还值得注意的是,本实施例中处理器92还可以根据共享资源的历史被请求次数和/或历史被占用时间按照预定的计算规则通过评分、或确定使用等级、或确定使用星级等方式来对共享资源进行评价。此时,预设的评价阈值即为对应的评分阈值,或等级阈值,或星级阈值。本实施例中,评价阈值可以为工程师设定的经验值,也可以让用户在终端上自行设置。应当理解的是,本实施例中,可以设置判别触发条件,此时,处理器92会在判别触发条件被触发时对加载的共享资源进行判定。本实施例中,判别触发条件可以为内存中新加载的共享资源个数,例如,在内存中新加载的共享资源达到10个时,处理器92对加载的共享资源进行判定;判别触发条件也可以为设定的一判别周期,例如,处理器92可以设置每隔两分钟就对加载的共享资源进行判别。应当理解的是,本实施例中,处理器92每一次进行判别的可以仅为新加载到内存中的共享资源,而对之前已经判别过的共享资源不再进行判别,从而节省处理器资源,例如,在处理器92采用第一种检测加载的共享资源是否为待释放资源的方式时,处理器92每一次即可仅对新加载到内存中的共享资源进行判别。事实上,由于随着时间的推移,某些之前被判别为非待释放资源的共享资源可能长时间未被调用,其对应的评价值可能发生了改变,本实施例中,处理器92还可以在每一次进行判别时,对内存中加载的所有共享资源都进行再一次评价判别,从而不断更新内存中保存的共享资源,保证内存中的共享资源为用户常用的共享资源。例如,在处理器92采用第二种检测加载的共享资源是否为待释放资源的方式时,处理器92每一次即可对加载到内存中的所有共享资源都进行判别。本实施例中,可以设置资源释放条件,处理器92在资源释放条件被触发时,将内存中的待释放资源进行释放。例如,在终端结束掉某一占用待释放资源的进程时,处理器92将内存中的待释放资源进行释放;又例如,在内存中待释放资源数达到预设值之后,处理器92将内存中的待释放资源进行释放;再例如,设定释放周期,每隔一个释放周期,处理器92就将内存中的待释放资源进行一次释放。应当理解的是,本实施例中,可能同时进行多个进程,此时可能存在再资源释放条件被触发时仍有部分待释放资源被占用,此时可以不释放该部分被占用的进程,而是在占用该待释放资源的进程结束时处理器92再进行释放,或者在占用该待释放资源的进程结束后的下一次资源释放条件被触发时处理器92再进行释放。本实施例中,也可以不设置资源释放条件,即在每一次检测出待释放资源之后,只要该待释放资源未被占用,处理器92即将该待释放资源进行释放。本实施例中,在终端关机时,处理器92可以将内存中已加载的且不需释放的共享资源在存储器91中的硬盘等只读存储器中进行单独保存,或将内存中已加载的且不需释放的共享资源的条目及其存储位置指向关系保存在存储器91中的硬盘等只读存储器中。这样,在用户再次开机时,处理器92在孵化进程的初始化阶段即可对应将内存中原有的已加载的且不需释放的共享资源重新加载进内存中。应当理解的是,在终端关机时,处理器92也可不进行相应保存,这样终端在关机后内存中的内容全部释放,再次开启终端时处理器92不向内存中加载任何共享资源,而在调用孵化进程创建子进程的过程中再次动态加载共享资源到内存中。应当理解的是,本实施例中终端可以采用如图2所示的终端结构来实现,具体的,具体的,通过在存储器209内存储共享资源加载程序,并交由处理器210执行,由处理器210来获取并解析预加载的配置文件,并根据解析结果确定终端当前可供调用的共享资源;同时由处理器210在调用孵化进程创建子进程时,根据子进程的创建需求将需要的共享资源加载到存储器209中的内存设备中。此外,处理器210还会运行存储器209内存储的共享资源加载程序以检测加载的共享资源是否为待释放资源,并对检测到的待释放资源进行释放。应当理解的是,本实施例中,还可以通过计算机可读存储介质,如软盘、光盘、硬盘、闪存、u盘、cf卡、sd卡、mmc卡等,来存储共享资源加载程序,终端的处理器85可以读取并执行该计算机可读存储介质中存储的共享资源加载程序。本实施例提供的终端,通过处理器在调用孵化进程创建子进程时,处理器根据子进程的创建需求确定创建该子进程所需的所有资源,再根据终端当前可供调用的所有共享资源和创建该子进程所需的所有资源确定该子进程创建所需的共享资源,并将创建该子进程需要的共享资源加载到内存中。这样,在子进程加载之前,也即终端启动过程中,内存中并未加载共享资源,而是在子进程创建的过程中,再根据各子进程的实际创建需求,加载其需要的共享资源,从而实现对共享资源的动态加载,避免了对内存庞大的初始消耗量,同时也极大地提升了终端的启动速度,提高了用户体验。第四实施例本实施例是在第三实施例的基础上,以根据共享资源的历史被请求次数和历史被占用时间一起按照预定的计算规则对加载到内存中的共享资源进行评分的情况为例,对本发明的技术方案做进行进一步示例说明。本实施例中,处理器92执行的共享资源加载程序的各子程序可通过处理器92的共享资源调度模块1001、映射处理模块1002、动态评分模块1003、资源加载模块1004和资源释放模块1005来完成,参见图10,具体的:共享资源调度模块1001用于调用映射处理模块1002进行孵化进程的初始化。映射处理模块1002用于根据共享资源调度模块1001的调度进行孵化进程的初始化,包括获取并解析预加载的配置文件,并根据解析结果记录终端中所有共享资源的条目并将之保存到存储器91中。映射处理模块1002还用于获取当前内存中已加载的共享资源的条目。共享资源调度模块1001还用于调用记录保存的共享资源条目,并根据创建子进程的创建需求查找对应的共享资源。应当注意的是,共享资源调度模块1001调用保存的共享资源条目找到创建该子进程所需的共享资源之前,还会根据映射处理模块1002获取的当前内存中已加载的共享资源的条目确定创建该子进程所需的共享资源在内存中是否存在或部分存在,再根据确定结果调用保存的共享资源条目,找到内存中当前不存在的那部分创建该子进程所需的共享资源。若创建该子进程所需的共享资源在内存中都已存在,则不再调用保存的共享资源条目。资源加载模块1004用于将共享资源调度模块1001查找到的对应的共享资源加载到内存中。动态评分模块1003用于根据共享资源的历史被请求次数和历史被占用时间一起按照预定的计算规则对内存中的共享资源进行动态评分,并将评分与预设阈值进行比较。应当注意的是,动态评分模块1003进行评分的对象是所有加载到内存中的共享资源,也即动态评分模块1003会对所有已加载到内存中的共享资源都进行评分。值得注意的是,动态评分模块1003对内存中的共享资源进行的评分是动态的,也即每隔一段时间动态评分模块1003就会进行一次评分,例如每隔两分钟动态评分模块1003就进行一次评分。应当理解的是,本实施例中用于进行判别比较的阈值可以是工程师通过经验值进行设定的。资源释放模块1005用于根据动态评分模块1003的评分比较结果,将评分小于预设阈值的共享资源进行释放。具体的,资源释放模块1005在占用该共享资源的进程结束或解除对该共享资源的占用时,对该共享资源进行释放。应当理解的是,本实施例中的共享资源可以是创建应用进程(即子进程)所需的资源,如某部分程序等;也可以是创建好应用进程之后其需要调用的资源,如某些图像数据、音频数据等。本实施例提供的终端,通过在应用进程的创建过程中,动态地加载共享资源,并引用评分机制,动态地将加载到内存中的不重要的共享资源进行释放,实现了对共享资源的选择性加载,避免了大量的非必须资源占用宝贵的内存资源的问题,使用户的使用体验得到了极大的提升。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1