CN111782560A - 内存回收方法、装置、终端设备以及存储介质 - Google Patents

内存回收方法、装置、终端设备以及存储介质 Download PDF

Info

Publication number
CN111782560A
CN111782560A CN202010666527.3A CN202010666527A CN111782560A CN 111782560 A CN111782560 A CN 111782560A CN 202010666527 A CN202010666527 A CN 202010666527A CN 111782560 A CN111782560 A CN 111782560A
Authority
CN
China
Prior art keywords
memory
ion
recyclable
recovery
currently
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
Application number
CN202010666527.3A
Other languages
English (en)
Inventor
李培锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202010666527.3A priority Critical patent/CN111782560A/zh
Publication of CN111782560A publication Critical patent/CN111782560A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种内存回收方法、装置、终端设备以及存储介质,其方法包括:监测当前是否存在可回收的大内存管理器ION内存;在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。本申请避免了用户使用的ION内存泄露导致的系统卡顿、宕机或者重启等问题,提升了用户体验。

Description

内存回收方法、装置、终端设备以及存储介质
技术领域
本申请涉及内存回收技术领域,尤其涉及一种内存回收方法、装置、终端设备以及存储介质。
背景技术
目前,Linux针对ION大块内存的泄露并无有效的规避措施,一旦出现ION内存泄露,只能被动的等待用户自己释放内存,否则最终就会因为ION内存泄露过多导致系统卡顿、宕机或者重启等问题。
发明内容
本申请的主要目的在于提供一种内存回收方法、装置、终端设备以及存储介质,旨在避免用户使用的ION内存泄露导致的系统宕机问题。
为实现上述目的,本申请提供一种内存回收方法,包括:
监测当前是否存在可回收的大内存管理器ION内存;
在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。
本申请实施例还提出一种内存回收装置,所述内存回收装置包括:
监测模块,用于监测当前是否存在可回收的ION内存;
回收模块,用于在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。
本申请实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的内存回收程序,所述内存回收程序被所述处理器执行时实现如上所述的内存回收方法的步骤。
本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有内存回收程序,所述内存回收程序被处理器执行时实现如上所述的内存回收方法的步骤。
本申请实施例提出的内存回收方法、装置、终端设备以及存储介质,通过监测当前是否存在可回收的大内存管理器ION内存;在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。由此,通过自动监测ION内存的情况,并对可回收ION内存自动进行回收,从而避免了用户使用的ION内存泄露导致的系统卡顿、宕机或者重启等问题,提升了用户体验。
附图说明
图1为本申请内存回收装置所属终端设备的功能模块示意图;
图2为本申请内存回收方法一示例性实施例的流程示意图;
图3为本申请内存回收方法另一示例性实施例的流程示意图;
图4为本申请实施例中内存回收的具体流程示意图;
图5为本申请内存回收方法再一示例性实施例的流程示意图;
图6为本申请实施例中缺页中断的具体流程示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例的主要解决方案是:通过监测当前是否存在可回收的大内存管理器ION内存;在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。由此,通过自动监测ION内存的情况,并对可回收ION内存自动进行回收,从而避免了用户使用的ION内存泄露导致的系统卡顿、宕机或者重启等问题,提升了用户体验。
本申请实施例涉及的技术术语:
ION,Linux大块内存分配管理的一套机制,是为解决内存碎片管理而引入的通用内存管理器。其中,ION设计的目标是为了避免内存碎片化,或者为一些有着特殊内存需求的硬件,比如GPUs(图形处理器)、display controller(显示控制器)以及camera等,在系统启动的时候,会为它们预留一些memory pools(内存池),这些memory pools就由ION来管理。通过ION就可以在硬件以及用户空间(user space)之间实现zero-copy(零拷贝)的内存共享。
在用户空间使用的设备访问库(user space device access libraries)一般使用ION来分配大块连续的media buffers(多媒体数据)。
缺页中断,Page fault,又名硬错误、硬中断、分页错误、寻页缺失、页缺失、页故障等,缺页中断指的是当软件试图访问已映射在虚拟地址空间中,但是并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。即当前访问的内存不存在物理内存映射,要访问的页不在主存,需要操作系统将其调入主存后再进行访问。在这个时候,被内存映射的文件实际上成了一个分页交换文件。
通常情况下,用于处理此中断的程序是操作系统的一部分。如果操作系统判断此次访问是有效的,那么操作系统会尝试将相关的分页从硬盘上的虚拟内存文件中调入内存。而如果访问是不被允许的,那么操作系统通常会结束相关的进程。
缺页中断机制对于利用虚拟内存来增加程序可用内存空间的操作系统(比如Microsoft Windows和各种类Unix系统)中都是常见且有必要的。
本申请实施例考虑到,相关技术方案中,针对ION大块内存的泄露并无有效的规避措施,一旦出现ION内存泄露,只能被动的等待用户自己释放内存,没法规避因为ION内存泄露导致的系统卡顿、宕机或者重启等问题,而且ION内存一般都是大块内存,一旦泄露后果比较严重。
基于此,本申请实施例提出一种解决方案,可以避免用户使用的ION内存泄露导致的系统宕机问题。
具体地,参照图1,图1为本申请内存回收装置所属终端设备的功能模块示意图。该内存回收装置可以为独立于终端设备的、能够进行数据处理的装置,其可以通过硬件或软件的形式承载于终端设备上。该终端设备可以为手机、平板电脑等能够进行数据处理的智能移动终端,还可以为具有数据处理功能的固定终端设备。该终端设备的操作系统包括但不限于Linux、Android等。
在本实施例中,该内存回收装置所属终端设备至少包括输出模块110、处理器120、存储器130以及通信模块140。
存储器130中存储有操作系统以及内存回收程序,内存回收装置可以将监测到的ION内存泄漏等信息存储于该存储器130中;输出模块110可为显示屏、扬声器等。通信模块140可以包括WIFI模块、移动通信模块以及蓝牙模块等,通过通信模块140与外部设备或服务器进行通信。
其中,存储器130中的内存回收程序被处理器执行时实现以下步骤:
监测当前是否存在可回收的大内存管理器ION内存;
在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。
进一步地,存储器130中的内存回收程序被处理器执行时还实现以下步骤:
监测当前ION内存是否满足可回收条件;其中,所述当前ION内存满足可回收条件包括:所述当前ION内存为用户使用的ION内存,且所述当前ION内存中的数据为设定类型数据;
若监测到所述当前ION内存满足可回收条件,则判定当前存在可回收的ION内存。
进一步地,存储器130中的内存回收程序被处理器执行时还实现以下步骤:
监测系统分配的内存量;
若监测到所述系统分配的内存量超过预设阈值,且分配的至少部分内存在预设时长内未被使用,则触发执行监测当前是否存在可回收的ION内存。
进一步地,存储器130中的内存回收程序被处理器执行时还实现以下步骤:
在监测到当前存在可回收的ION内存时,遍历ION的内存链表;
从所述ION的内存链表中,查找分配最早的ION内存,并判断所述分配最早的ION内存是否是用户使用的ION内存;
若所述分配最早的ION内存是用户使用的ION内存,则回收该ION内存,并标记该ION内存被主动回收;
在回收每个ION内存后,判断回收的内存量是否已经满足预设需求;
如果满足需求,则退出内存回收流程;
如果不满足需求,则继续遍历ION的内存链表,直至ION的内存链表遍历结束或者回收的内存量满足预设需求;
若所述分配最早的ION内存不是用户使用的ION内存,则继续遍历ION的内存链表,直至ION的内存链表遍历结束或者回收的内存量满足预设需求。
进一步地,存储器130中的内存回收程序被处理器执行时还实现以下步骤:
进行常规内存回收操作,并检测常规内存回收是否成功;
在检测到常规内存回收失败时,触发执行步骤:监测当前是否存在可回收的ION内存;
在检测到常规内存回收成功时,结束内存回收流程。
进一步地,存储器130中的内存回收程序被处理器执行时还实现以下步骤:
在接收到内存分配请求时,判断当前内存是否充足;
在当前内存不充足时,触发执行步骤:进行常规内存回收操作;
所述进行常规内存回收操作,并检测常规内存回收是否成功的步骤包括:
在回收内存过程中,监测回收的内存是否满足所述内存分配请求的分配量;
若在回收的内存满足所述内存分配请求的分配量之前,内存回收操作时长达到设定极限值,则判定内存回收失败。
进一步地,存储器130中的内存回收程序被处理器执行时还实现以下步骤:
在检测到内存被访问时,判断当前访问的内存是否存在物理内存映射;
若当前访问的内存不存在物理内存映射,则触发缺页中断流程;
判断触发缺页中断流程的当前访问的内存是否是被回收的ION内存;
若当前访问的内存是被回收的ION内存,则重新分配内存给当前访问用户;
若当前访问的内存不是被回收的ION内存,则进行常规的缺页中断流程。
本实施例通过上述方案,通过监测当前是否存在可回收的ION内存;在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。由此,通过自动监测ION内存的情况,并对可回收ION内存自动进行回收,从而避免了用户使用的ION内存泄露导致的系统卡顿、宕机或者重启等问题,提升了用户体验。
基于上述终端设备架构但不限于上述架构,提出本申请方法实施例。
参照图2,图2为本申请内存回收方法一示例性实施例的流程示意图。所述内存回收方法包括:
步骤S101,监测当前是否存在可回收的ION内存;
本实施例方法的执行主体可以是一种内存回收装置,该内存回收装置可以集成在手机、平板电脑等智能终端设备,实现对这些智能终端设备内存的回收管理。
在本实施例中,主要针对终端系统ION大块内存的回收处理,尤其是针对ION大块内存泄露时的回收处理。本实施例考虑到,目前针对ION大块内存的泄露并无有效的规避措施,一旦出现ION内存泄露,只能被动的等待用户自己释放内存,无法规避因为ION内存泄露导致的系统卡顿、宕机或者重启等问题,而且ION内存一般都是大块内存,一旦泄露后果比较严重。
具体实现时,首先,监测当前是否存在可回收的ION内存。
其中,监测当前是否存在可回收的ION内存可以监测当前ION内存是否满足可回收条件;其中,所述当前ION内存满足可回收条件包括:所述当前ION内存为用户使用的ION内存,且所述当前ION内存中的数据为设定类型数据,比如多媒体的数据buffer,相机的buffer等。
因此,可回收的ION内存必须满足如下两个条件:
一是内存里面的数据丢失后,对系统的影响程度要低于内存极度紧张导致的系统卡顿,而这类内存数据一般是多媒体的数据buffer,相机的buffer等;二是必须是用户使用的ION内存,这类用户使用的ION内存,当被回收后重新访问时可以通过缺页中断进行处理。
若监测到所述当前ION内存满足可回收条件,则判定当前存在可回收的ION内存。
其中,如何触发监测当前是否存在可回收的ION内存,可以采用如下方案:
其中,作为一种实施方式,可以实时或定期监测系统ION内存是否出现泄漏,以便对泄漏的ION内存进行回收等相应处理,避免因为ION内存泄露导致的系统卡顿、宕机或者重启等问题。其中,在下列情况下,可以触发监测当前是否存在可回收的ION内存:
监测到系统分配的内存量超过预设阈值,且分配的至少部分内存在预设时长内未被使用。
上述情况,很有可能是因为系统ION内存出现泄漏。因此,可以实时或定期监测系统分配的内存量;若监测到系统分配的内存量超过预设阈值,且分配的至少部分内存在预设时长内未被使用,则可以触发监测当前是否存在可回收的ION内存。
举例如下:基于系统内存配置规则或者系统内存使用情况,可以预测系统需要分配2G内存以满足当前的内存使用需求,若通过监测系统分配的内存量,监测到系统当前分配的内存量达到3G,超过预设阈值2G,且监测到系统分配的部分内存(比如1G)在预设时长内未被使用,则判定ION内存可能出现泄漏,此时可以触发监测当前是否存在可回收的ION内存。
作为另一种实施方式,可以在进行系统常规内存回收时,监测当前是否存在可回收的ION内存,尤其是在系统内存极度紧张时或者通过系统常规内存回收检测到当前系统内存极度紧张时,触发监测当前是否存在可回收的ION内存,以便对可回收的ION内存进行回收等相应处理。
以系统常规内存回收为例,通过系统常规内存回收检测当前系统内存是否极度紧张。通常情况下,在内存充足时,满足系统内存分配需求,不会触发判断是否有可回收的ION大块内存;而在内存不充足时,为了满足当前内存分配需求,需等待回收内存,判断回收的内存是否满足分配量,若等待时间达到设定极限值,则表明当前系统内存极度紧张,系统内存分配管理器不再等待,触发监测当前是否有可回收的ION大块内存。
步骤S102,在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。
具体回收过程如下:
在监测到当前存在可回收的ION内存时,遍历ION的内存链表;
从所述ION的内存链表中,查找分配最早的ION内存,并判断所述分配最早的ION内存是否是用户使用的ION内存;
其中,在ION内存管理器进行大块内存分配时都会计时,即对每个分配的内存都会计时,其中,分配最早的ION内存是指分配计时时间最靠前或最久的ION内存。
若所述分配最早的ION内存是用户使用的ION内存,则回收该ION内存,并标记该ION内存被主动回收;
在回收每个ION内存后,判断回收的内存量是否已经满足预设需求;
如果满足需求,则退出内存回收流程;
如果不满足需求,则继续遍历ION的内存链表,直至ION的内存链表遍历结束或者回收的内存量满足预设需求;
若所述分配最早的ION内存不是用户使用的ION内存,则继续遍历ION的内存链表,直至ION的内存链表遍历结束或者回收的内存量满足预设需求。
本实施例内存回收具体流程可以参照图4所示。
本实施例通过上述方案,通过监测当前是否存在可回收的ION内存;在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。由此,通过自动监测ION内存的情况,并对可回收ION内存自动进行回收,从而避免了用户使用的ION内存泄露导致的系统卡顿、宕机或者重启等问题,提升了用户体验。
参照图3,图3为本申请内存回收方法另一示例性实施例的流程示意图。基于上述图2所示的实施例,在本实施例中,在上述步骤S101,监测当前是否存在可回收的ION内存之前还包括:
步骤S100,进行常规内存回收操作,并检测常规内存回收是否成功;
在检测到常规内存回收失败时,执行步骤S101:监测当前是否存在可回收的ION内存;
在检测到常规内存回收成功时,结束内存回收流程。
相比上述图2所示的实施例,本实施例还包括通过检测常规内存回收操作触发监测当前是否存在可回收的ION内存的方案。
具体地,当系统内存紧张时,会触发常规内存回收操作。通常情况下,如果当前内存回收失败,就会走out of memory的流程,本实施例方案则是在out of memory流程前先进行ION泄露内存回收流程。
其中,out of memory的流程是指:当内存回收操作无法满足当前分配需求时,触发相应的机制,运行系统设定进程,比如查杀操作,这样会导致系统宕机。
本申请中,在out of memory前先进行监测当前是否存在可回收的ION内存流程,从而避免用户使用的ION内存泄露导致的系统卡顿、宕机或者重启等问题,提升用户体验。
具体地,首先,在内存紧张时,进行常规内存回收操作,并检测常规内存回收是否成功;在检测到常规内存回收失败时,监触发执行步骤:监测当前是否存在可回收的ION内存;在检测到常规内存回收成功时,结束内存回收流程。
其中,作为一种实施方式,常规内存回收操作可以根据当前系统内存分配请求而触发。具体实现如下:
在接收到内存分配请求时,判断当前内存是否充足;在当前内存不充足时,触发执行进行常规内存回收操作,并检测常规内存回收是否成功。
具体地,在回收内存过程中,监测回收的内存是否满足当前内存分配请求的分配量;若在回收的内存满足所述内存分配请求的分配量之前,内存回收操作时长达到设定极限值,即当前回收操作无法满足分配需求,则判定内存回收失败,触发执行步骤:监测当前是否存在可回收的ION内存。
本实施例的内存回收的具体流程,请参照图4所示。
本实施例通过上述方案,通过进行常规内存回收操作,并检测常规内存回收是否成功;在检测到常规内存回收失败时,监测当前是否存在可回收的ION内存;在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。由此,通过在常规内存回收操作的过程中,自动监测ION内存情况,并对可回收ION内存自动进行回收,从而避免了用户使用的ION内存泄露导致的系统卡顿、宕机或者重启等问题,提升了用户体验。
参照图5,图5为本申请内存回收方法再一示例性实施例的流程示意图。基于上述图3所示的实施例,在本实施例中,在上述步骤S102,在监测到当前存在可回收的ION内存时对所述可回收的ION内存进行回收之后,所述内存回收方法还包括:
步骤S103,在检测到内存被访问时,判断当前访问的内存是否存在物理内存映射;
步骤S104,若当前访问的内存不存在物理内存映射,则触发缺页中断流程;
步骤S105,判断触发缺页中断流程的当前访问的内存是否是被回收的ION内存;
步骤S106,若当前访问的内存是被回收的ION内存,则重新分配内存给当前访问用户;
步骤S107,若当前访问的内存不是被回收的ION内存,则进行常规的缺页中断流程。
相比上述图3所示的实施例,本实施例还包括结合缺页中断流程对用户再次访问的内存进行处理的方案。
具体地,在对可回收ION内存进行回收之后,若再次检测到内存被访问时,判断当前访问的内存是否存在物理内存映射;
若当前访问的内存不存在物理内存映射,则触发缺页中断流程;
判断触发缺页中断流程的当前访问的内存是否是被回收的ION内存;
若当前访问的内存是被回收的ION内存,则重新分配ION内存给当前访问用户,重新分配ION内存时,标记ION内存分配时间;若当前访问的内存不是被回收的ION内存,则进行常规的缺页中断流程。
也就是说,对于当前访问用户,之前已分配内存给用户,该内存有可能成为泄漏的ION内存,而且可能被回收,那么,在该用户重新访问该内存时,若触发缺页中断,则通过缺页判断该内存是否是被回收的ION内存,如果是的话,则由于该内存被回收了,则需要重新分配内存给用户,如果该内存不是被回收的ION内存,则说明原来分配给用户的内存还在,无需再重新分配内存给用户。
其中,本实施例中缺页中断流程可以参照图6所示。
本实施例通过上述方案,通过进行常规内存回收操作,并检测常规内存回收是否成功;在检测到常规内存回收失败时,监测当前是否存在可回收的ION内存;在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回。。由此,通过在常规内存回收操作的过程中,自动监测ION内存情况,并对可回收ION内存自动进行回收,从而避免了用户使用的ION内存泄露导致的系统卡顿、宕机或者重启等问题,提升了用户体验;此外,本实施例在检测到内存被访问时,判断当前访问的内存是否存在物理内存映射;若当前访问的内存不存在物理内存映射,则触发缺页中断流程;判断触发缺页中断流程的当前访问的内存是否是被回收的ION内存;若当前访问的内存是被回收的ION内存,则重新分配内存给当前访问用户;若当前访问的内存不是被回收的ION内存,则进行常规的缺页中断流程。从而通过判断是否是ION内存回收造成的缺页中断,来决定是否为访问用户重新分配内存,避免了不必要的常规缺页中断处理造成的系统宕机等问题,同时可以及时为用户分配内存,提升用户体验。
此外,本申请实施例还提出一种内存回收装置,所述内存回收装置包括:
监测模块,用于监测当前是否存在可回收的ION内存;
回收模块,用于在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。
本实施例实现内存回收的原理及实施过程,请参照上述各实施例,在此不再赘述。
此外,本申请实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的内存回收程序,所述内存回收程序被所述处理器执行时实现如上实施例所述的内存回收方法的步骤。
由于本内存回收程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
此外,本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有内存回收程序,所述内存回收程序被处理器执行时实现如上实施例所述的内存回收方法的步骤。
由于本内存回收程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
相比现有技术,本申请实施例提出的内存回收方法、装置、终端设备以及存储介质,通过监测当前是否存在可回收的大内存管理器ION内存;在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。由此,通过自动监测ION内存的情况,并对可回收ION内存自动进行回收,从而避免了用户使用的ION内存泄露导致的系统卡顿、宕机或者重启等问题,提升了用户体验。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,被控终端,或者网络设备等)执行本申请每个实施例的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种内存回收方法,其特征在于,包括:
监测当前是否存在可回收的大内存管理器ION内存;
在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。
2.根据权利要求1所述的内存回收方法,其特征在于,所述监测当前是否存在可回收的ION内存的步骤包括:
监测当前ION内存是否满足可回收条件;其中,所述当前ION内存满足可回收条件包括:所述当前ION内存为用户使用的ION内存,且所述当前ION内存中的数据为设定类型数据;
若监测到所述当前ION内存满足可回收条件,则判定当前存在可回收的ION内存。
3.根据权利要求1所述的内存回收方法,其特征在于,所述监测当前是否存在可回收的ION内存的步骤之前还包括:
监测系统分配的内存量;
若监测到所述系统分配的内存量超过预设阈值,且分配的至少部分内存在预设时长内未被使用,则触发执行步骤:监测当前是否存在可回收的ION内存。
4.根据权利要求1所述的内存回收方法,其特征在于,所述在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收的步骤包括:
在监测到当前存在可回收的ION内存时,遍历ION的内存链表;
从所述ION的内存链表中,查找分配最早的ION内存,并判断所述分配最早的ION内存是否是用户使用的ION内存;
若所述分配最早的ION内存是用户使用的ION内存,则回收该ION内存,并标记该ION内存被主动回收;
在回收每个ION内存后,判断回收的内存量是否已经满足预设需求;
如果满足需求,则退出内存回收流程;
如果不满足需求,则继续遍历所述ION的内存链表,直至所述ION的内存链表遍历结束或者所述回收的内存量满足预设需求;
若所述分配最早的ION内存不是用户使用的ION内存,则继续遍历所述ION的内存链表,直至所述ION的内存链表遍历结束或者所述回收的内存量满足预设需求。
5.根据权利要求3所述的内存回收方法,其特征在于,所述若监测到所述系统分配的内存量超过预设阈值,且分配的至少部分内存在预设时长内未被使用的步骤之后还包括:
进行常规内存回收操作,并检测常规内存回收是否成功;
在检测到常规内存回收失败时,触发执行步骤:监测当前是否存在可回收的ION内存;
在检测到常规内存回收成功时,结束内存回收流程。
6.根据权利要求5所述的内存回收方法,其特征在于,所述进行常规内存回收操作,并检测常规内存回收是否成功的步骤之前还包括:
在接收到内存分配请求时,判断当前内存是否充足;
在所述当前内存不充足时,触发执行步骤:进行常规内存回收操作;
所述进行常规内存回收操作,并检测常规内存回收是否成功的步骤包括:
在回收内存过程中,监测回收的内存是否满足所述内存分配请求的分配量;
若在所述回收的内存满足所述内存分配请求的分配量之前,内存回收操作时长达到设定极限值,则判定所述内存回收失败。
7.根据权利要求1-6中任一项所述的内存回收方法,其特征在于,所述内存回收方法还包括:
在检测到内存被访问时,判断当前访问的内存是否存在物理内存映射;
若当前访问的内存不存在物理内存映射,则触发缺页中断流程;
判断触发缺页中断流程的所述当前访问的内存是否是被回收的ION内存;
若所述当前访问的内存是被回收的ION内存,则重新分配内存给当前访问用户;
若所述当前访问的内存不是被回收的ION内存,则进行常规的缺页中断流程。
8.一种内存回收装置,其特征在于,所述内存回收装置包括:
监测模块,用于监测当前是否存在可回收的ION内存;
回收模块,用于在监测到当前存在可回收的ION内存时,对所述可回收的ION内存进行回收。
9.一种终端设备,其特征在于,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的内存回收程序,所述内存回收程序被所述处理器执行时实现如权利要求1-8中任一项所述的内存回收方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有内存回收程序,所述内存回收程序被处理器执行时实现如权利要求1-8中任一项所述的内存回收方法的步骤。
CN202010666527.3A 2020-07-10 2020-07-10 内存回收方法、装置、终端设备以及存储介质 Pending CN111782560A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010666527.3A CN111782560A (zh) 2020-07-10 2020-07-10 内存回收方法、装置、终端设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010666527.3A CN111782560A (zh) 2020-07-10 2020-07-10 内存回收方法、装置、终端设备以及存储介质

Publications (1)

Publication Number Publication Date
CN111782560A true CN111782560A (zh) 2020-10-16

Family

ID=72768338

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010666527.3A Pending CN111782560A (zh) 2020-07-10 2020-07-10 内存回收方法、装置、终端设备以及存储介质

Country Status (1)

Country Link
CN (1) CN111782560A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984295A (zh) * 2018-06-19 2018-12-11 珠海全志科技股份有限公司 内存回收方法、计算机装置及计算机可读存储介质
CN111382087A (zh) * 2018-12-28 2020-07-07 华为技术有限公司 一种内存管理方法及电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984295A (zh) * 2018-06-19 2018-12-11 珠海全志科技股份有限公司 内存回收方法、计算机装置及计算机可读存储介质
CN111382087A (zh) * 2018-12-28 2020-07-07 华为技术有限公司 一种内存管理方法及电子设备

Similar Documents

Publication Publication Date Title
US11531625B2 (en) Memory management method and apparatus
WO2017114288A1 (zh) 一种内存回收方法及装置
US8286188B1 (en) Method and apparatus for advanced interprocess communication
EP3796168A1 (en) Information processing apparatus, information processing method, and virtual machine connection management program
CN110532197B (zh) 内存回收方法及装置、电子设备、存储介质
CN109669877B (zh) 内存管理方法、装置、终端及存储介质
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
US20210200668A1 (en) Reserved memory in memory management system
JP2009506411A (ja) コンピュータ装置におけるプリエンプト可能なコンテキストスイッチ
CN113448735A (zh) 内存泄露处理方法、装置和电子设备
CN114168490A (zh) 确定内存回收阈值的方法及相关设备
US20120005448A1 (en) Demand-Based Memory Management of Non-pagable Data Storage
CN110162395B (zh) 一种内存分配的方法及装置
CN111475299B (zh) 内存分配方法、装置、存储介质及电子设备
KR20140070133A (ko) 메모리 관리 장치, 방법 및 시스템
CN111782560A (zh) 内存回收方法、装置、终端设备以及存储介质
CN112162818A (zh) 一种虚拟内存分配方法、装置、电子设备及存储介质
US8719499B2 (en) Cache-line based notification
CN114996014A (zh) 基于ion分配器的内存分配方法、装置和电子设备
Hahn et al. Improving user experience of android smartphones using foreground app-aware I/O management
CN109408412B (zh) 内存预取控制方法、装置及设备
CN114357481A (zh) 存储电路的访问方法、装置、计算机设备和存储介质
CN111078405B (zh) 内存分配方法、装置、存储介质及电子设备
US8443051B2 (en) Direct memory access buffer management
CN117971712B (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