一种内存回收方法及装置的制造方法

文档序号:9921966阅读:293来源:国知局
一种内存回收方法及装置的制造方法
【技术领域】
[0001] 本申请涉及计算机技术领域,尤其涉及一种内存回收方法及装置。
【背景技术】
[0002] 出于对生产成本的考虑,终端设备的内存容量往往比较小,大多为1~2G。目前,内 核对应用程序申请内存的需求是基于尽量满足的原则,这就导致在手机等终端产品上,消 耗比较大的内存的应用(比如照相机)在启动、运行过程中常因申请不到足够的内存(比如 有的应用会瞬间申请300MB~500MB内存)而卡顿,甚至导致应用反复退出、重启的现象。
[0003] Linux系统的内存回收策略是在内存不足时触发,比如,当有应用被启动或切换到 前台界面时,用户态的应用进程会向内核态申请内存,若该应用需要占用的内存大于系统 空闲内存,贝U会触发内存回收,具体通过近期最少使用(Least Recently Used,LRU)算法选 取最久最不常用的内存进行回收,除此之外,还可以通过内存压缩、相同页的合并、开展内 存碎片整理等进行内存回收。安卓(Android)系统是通过在内核态设置空闲内存等级来在 内核态触发内存回收,比如若内存少于mMB,则杀掉优先级最低的应用进程,若内存再少于 Π2(ηι〈η2)ΜΒ,则释放掉优先级高一级的应用进程。
[0004] 上述内存回收策略由于都是在内核态发现可供使用的空闲内存较少时才触发内 存回收,从而容易导致系统内利用率较低的内存无法得到及时释放。当发现空闲内存不足 时再触发内存回收,就容易导致当前运行的应用由于不能及时申请到所需的内存而出现卡 顿。

【发明内容】

[0005] 本申请提供一种内存回收方法及装置,用以一定程度上解决内存回收不及时、容 易导致应用卡顿的问题。
[0006] 本申请提供一种内存回收方法,在用户态执行:监控终端内安装的应用被用户操 作使用的信息及内存占用信息;若根据终端内安装的应用被用户操作使用的信息及内存占 用信息中的至少一种,确定当前满足内存回收条件,则根据终端内当前正在运行的应用被 用户操作使用的信息及内存占用信息,从终端当前正在运行的应用中确定将被回收内存的 应用,并通过调用内核态提供的内存回收接口执行内存回收。
[0007] 本申请通过在用户态监控终端内安装的应用被用户操作使用的情况及内存占用 情况来主动进行内存回收,从而可以在应用被用户操作使用频繁、内存占用量较大的时候, 加快内存回收频率,保证内存的正常使用。
[0008] 作为一种实施方式,根据所述终端内安装的应用被用户操作使用的信息及内存占 用信息,确定当前满足内存回收条件,包括:根据终端内安装的应用被用户操作使用的信息 及内存占用信息,确定内存回收时间间隔;在当前时间到达内存回收时间间隔所指示的内 存回收时间时,确定当前满足内存回收条件。
[0009]在该实施方式下,首先根据用户使用应用的规律确定内存回收时间间隔,然后根 据内存回收时间间隔所指示的内存回收时间主动进行内存回收,这种方式对内存进行有计 划的回收,可以使终端内可用空闲内存保持在一个较佳的水平。
[0010] 在上述实施方式中,确定内存回收时间间隔的一种可选方式为:分别确定在预设 的至少一个时间段中的每个时间段内所述终端内安装的应用被用户操作使用的信息及内 存占用信息;针对所述至少一个时间段中的每个时间段,分别根据在该时间段内所述终端 内安装的应用被用户操作使用的信息及内存占用信息,确定在该时间段内的内存回收时间 间隔。
[0011] 由于用户在不同的时间段内操作使用应用的频率不同,采用这种方式可以在不同 的时间段使用不同的内存回收时间间隔,在进一步提高内存回收的及时性的同时,避免因 频繁执行不必要的内存回收流程而浪费系统资源。
[0012] 作为另一种实施方式,根据所述终端内安装的应用的内存占用信息,确定当前满 足内存回收条件,包括:若确定系统内空闲内存小于第一设定阈值,则确定当前满足内存回 收条件。
[0013] 采用这种方式,可以一定程度上避免出现内存不足的情况出现。
[0014] 作为又一种实施方式,根据终端内安装的应用被用户操作使用的信息及内存占用 信息,确定当前满足内存回收条件,包括:若监测到有应用被启动或切换到前台界面,则根 据该应用的内存占用信息,以及系统内空闲内存大小,判断是否需要进行内存回收;若需要 进行内存回收,则确定当前满足内存回收条件。
[0015] 由于新启动应用或切换到前台界面的应用通常是用户即将使用的应用,采用这种 方式可以保证新启动应用或切换到前台界面的应用的正常运行,从而提升系统性能,提高 用户体验。
[0016] 作为再一种实施方式,根据终端内安装的应用被用户操作使用的信息,确定当前 满足内存回收条件,包括:若当前在后台运行的应用的个数大于设置的允许后台运行应用 的个数,则确定当前满足内存回收条件。
[0017] 进一步地,这里可以每隔一段时间根据当前空闲内存大小来设置允许后台运行应 用的个数。由于后台运行的应用通常不是用户正在操作使用的应用,限制这部分应用的个 数,可以避免对内存的过多无效占用。
[0018] 在上述实施方式中,确定将被回收内存的应用,并通过调用内核态提供的内存回 收接口进行内存回收的一种可选方式为:根据预先保存的被回收内存的应用的优先级顺 序,选择终端内当前正在运行的、用户没有在操作使用的应用,确定当前时间是否位于选择 的应用的高概率使用时间段,该应用的高概率使用时间段为基于该应用被用户操作使用的 信息确定的;若不是,则确定选择的所述应用为被回收内存的应用,并通过调用内核态提供 的内存回收接口进行内存回收;重复上述步骤,直到满足内存回收的终止条件。
[0019] 采用这种方式,优先选择回收优先级较低(这部分应用通常是用户不常使用的应 用)的、且当前时间不在其高概率运行时间段的应用的内存,可以进一步提高系统性能,提 升用户体验。
[0020] 上述实施方式中,内存回收的终止条件可以包括以下条件中的一种或多种:
[0021] 系统内空闲内存大小大于第二设定阈值;
[0022] 当前启动的应用所需的内存小于系统空闲内存;
[0023] 切换到前台界面的应用所需的内存小于系统空闲内存;
[0024] 后台运行应用的个数小于或等于设置的允许后台运行应用的个数。
[0025] 进一步地,可以根据以下步骤设置被回收内存的应用的优先级顺序:
[0026] 按照终端内安装各个应用的使用频率,对各个应用进行分组,其中,同组内的应用 具有相同的使用频率范围;根据每个分组对应的使用频率范围,确定各个分组内的应用被 回收内存的优先级顺序;其中,同组内的应用具有相同的优先级顺序。
[0027] 作为又一种实施方式,根据所述终端内安装的应用被用户操作使用的信息,确定 当前满足内存回收条件,通过调用内核态提供的内存回收接口执行内存回收,包括:若监测 到终端内存在应用在后台停留的时间长度超过设定时长,则确定当前满足内存回收条件, 通过调用内核态提供的内存回收接口对在后台停留的时间长度超过设定时长的应用的内 存进行回收。
[0028] 这里,在后台停留时间较长的应用一般是用户当前一段时间不再操作的应用,可 以释放掉这部分应用的内存,以便提供给更有需要的应用,从而提高了对内存的有效利用 率。
[0029]本申请还提供一种内存回收装置,包括:
[0030] 确定模块,用于在用户态监控终端内安装的应用被用户操作使用的信息及内存占 用?目息;
[0031] 内存回收模块,用于若根据所述终端内安装的应用被用户操作使用的信息及内存 占用信息中的至少一种,确定当前满足内存回收条件,则根据所述终端内当前正在运行的 应用被用户操作使用的信息及内存占用信息,从所述终端当前正在运行的应用中确定将被 回收内存的应用,并通过调用内核态提供的内存回收接口执行内存回收。
[0032] 本申请通过在用户态监控终端内安装的应用被用户操作使用的情况及内存占用 情况来主动进行内存回收,从而可以在应用被用户操作使用频繁、内存占用量较大的时候, 加快内存回收频率,保证内存的正常使用。
[0033] 作为一种实施方式,内存回收模块具体用于:
[0034] 根据终端内安装的应用被用户操作使用的信息及内存占用信息,确定内存回收时 间间隔;在当前时间到达所述内存回收时间间隔所指示的内存回收时间时,确定当前满足 内存回收条件。
[0035]在该实施方式下,首先根据用户使用应用的规律确定内存回收时间间隔,然后根 据内存回收时间间隔所指示的内存回收时间主动进行内存回收,这种方式对内存进行有计 划的回收,可以使终端内可用空闲内存保持在一个较佳的水平。
[0036] 在上述实施方式中,内存回收模块确定内存回收时间间隔的一种可选方式为:分 别确定在预设的至少一个时间段中的每个时间段内所述终端内安装的应用被用户操作使 用的信息及内存占用信息;针对所述至少一个时间段中的每个时间段,分别根据在该时间 段内所述终端内安装的应用被用户操作使用的信息及内存占用信息,确定在该时间段内的 内存回收时间间隔。
[0037] 由于用户在不同的时间段内操作使用应用的频率不同,采用这种方式可以在不同 的时间段使用不同的内存回收时间间隔,在进一步提高内存回收的及时性的同时,避免因 频繁执行不必要的内存回收流程而浪费系统资源。
[0038] 作为另一种实施方式,内存回收模块具体用于:若确定系统内空闲内存小于第一 设定阈值,则确定当前满足内存回收条件。
[0039] 采用这种方式,可以避免出现内存不足的情况出现。
[0040] 作为又一种实施方式,内存回收模块具体用于:若监测到有应用被启动或切换到 前台界面,则根据该应用的内存占用信息,以及系统内空闲内存大小,判断是否需要进行内 存回收;若需要进行内存回收,则确定当前满足内存回收条件。
[0041] 由于新启动应用或切换到前台界面的应用通常是用户即将使用的应用,采用这种 方式可以保证新启动应用或切换到前台界面的应用的正常运行,从而提升系统性能,也提 尚了用户体验。
[0042] 作为再一种实施方式,内存回收模块具体用于:若当前在后台运行的应用的个数 大于设置的允许后台运行应用的个数,则确定当前满足内存回收条件。
[0043] 进一步地,这里可以每隔一段时间根据当前空闲内存大小来设置允许后台运行应 用的个数。由于后台运行的应用通常不是用户正在操作使用的应用,限制这部分应用的个 数,可以避免对内存的过多无效占用。
[0044] 在上述实施方式中,内存回收模块确定将被回收内存的应用,并通过调用内核态 提供的内存回收接口进行内存回收的一种可选方式为:根据预先保存的被回收内存的应用 的优先级顺序,选择终端内当前正在运行的、用户没有在操作使用的应用,确定当前时间是 否位于选择的应用的高概率使用时间段,该应用的高概率使用时间段为基于该应用被用户 操作使用的信息确定的;若不是,则确定选择的所述应用为被回收内存的应用,并通过调用 内核态提供的内存回收接口进行内存回收;重复上述步骤,直到满足内存回收的终止条件。
[0045] 采用这种方式,
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1