CN108228343B - 内存回收方法及装置、计算机装置及计算机可读存储介质 - Google Patents

内存回收方法及装置、计算机装置及计算机可读存储介质 Download PDF

Info

Publication number
CN108228343B
CN108228343B CN201710719984.2A CN201710719984A CN108228343B CN 108228343 B CN108228343 B CN 108228343B CN 201710719984 A CN201710719984 A CN 201710719984A CN 108228343 B CN108228343 B CN 108228343B
Authority
CN
China
Prior art keywords
memory
queue
memory recovery
current state
disk
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.)
Active
Application number
CN201710719984.2A
Other languages
English (en)
Other versions
CN108228343A (zh
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.)
Meizu Technology Co Ltd
Original Assignee
Meizu Technology Co 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 Meizu Technology Co Ltd filed Critical Meizu Technology Co Ltd
Priority to CN201710719984.2A priority Critical patent/CN108228343B/zh
Publication of CN108228343A publication Critical patent/CN108228343A/zh
Application granted granted Critical
Publication of CN108228343B publication Critical patent/CN108228343B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/5022Mechanisms to release resources
    • 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

Abstract

本发明提供一种内存回收方法及内存回收装置,所述内存回收方法包括:接收内存回收请求,并查询访问磁盘的队列管道的当前状态;判断所述队列管道的当前状态是否满足预设条件;若所述队列管道的当前状态满足预设条件,则将所述内存回收请求加到所述队列管道中进行排队,以响应所述内存回收请求并将其对应的待回收的进程的内存数据写入到磁盘中进行保存。本发明提供的内存回收方法在进行内存回收之前,根据访问磁盘的队列管道的当前状态决定是否响应内存回收请求,从而能够有效避免在内存回收时出现的磁盘访问的压力过大、系统卡顿等问题,并能够有效提升用户的使用体验。

Description

内存回收方法及装置、计算机装置及计算机可读存储介质
技术领域
本发明涉及内存管理技术领域,尤其涉及一种内存回收方法及装置、计算机装置及计算机可读存储介质。
背景技术
本部分旨在为权利要求书及具体实施方式中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在各种操作系统中,用户在打开某个应用程序后,该应用程序会占用系统内存,即使该应用程序被切换到后台运行,仍会占用一定的系统内存。若用户打开的应用程序过多,则占用的系统内存也越多,而系统内存占用越多,应用程序运行速度越慢,甚至造成死机现象。解决上述问题的一个方法是增加系统内存,但这将带来硬件成本的提高,因此,内存管理技术应运而生。内存管理技术是指应用程序运行时,对系统内存资源的分配和使用的技术,其主要的目的是如何高效、快速的分配内存资源,并且在适当的时候释放和回收内存资源。
当在应用程序中打开了一个文件,且回收的文件页面是被修改过的文件页面或匿名页面时,目前的内存回收方案中是通过将该页面的内存数据写入到磁盘保存,然后释放这部分内存给其它应用程序使用,当再次执行该应用程序时,重新把该应用程序的数据从磁盘中加载到内存中重新运行。由于磁盘的读写速度要比内存的读写速度慢许多,系统把内存中的数据写到磁盘或者从磁盘加载数据到内存中都是比较耗时的操作,当多个应用程序对磁盘进行操作时,就会出现竞争卡死的问题,所以系统在设计之初,设计了一个队列管道,该队列管道把所有应用程序对磁盘操作的请求按照先后顺序进行访问。
例如图1所示,当程序A和程序B都要访问磁盘时,系统会根据这两个程序的优先级,先后地进行访问。如果在同一时刻系统出现多个进程访问磁盘的时候,该队列管道内就会在短时间内塞满大量的请求,此时在请求中的进程只能等待磁盘的访问,这过程中不会影响任务的外部请求,这样就会导致系统出现卡顿,而在内存回收时,则会加重这种现象,从而降低了用户体验。
发明内容
鉴于此,有必要提供一种内存回收方法及装置、计算机装置及计算机可读存储介质,以解决内存回收时出现的系统卡顿的问题,并能够提升用户的使用体验。
本发明实施例一方面提供一种内存回收方法。所述内存回收方法包括:
接收内存回收请求,并查询访问磁盘的队列管道的当前状态;
判断所述队列管道的当前状态是否满足预设条件;
若所述队列管道的当前状态满足预设条件,则将所述内存回收请求加到所述队列管道中进行排队,以响应所述内存回收请求并将其对应的待回收的进程的内存数据写入到磁盘中进行保存。
进一步的,本发明实施例提供的上述内存回收方法中,所述内存回收方法还包括:
若所述队列管道的当前状态不满足预设条件,则中止所述内存回收请求,并放弃回收所述内存回收请求对应的待回收的进程的内存数据。
进一步的,本发明实施例提供的上述内存回收方法中,所述判断所述队列管道的当前状态是否满足预设条件包括:
查询当前所述队列管道中的内存回收请求对应的进程中具有最高优先级的进程;
判断所述具有最高优先级的进程是否为桌面进程;
若所述具有最高优先级的进程为桌面进程,则判断所述队列管道的当前状态不满足预设条件。
进一步的,本发明实施例提供的上述内存回收方法中,所述判断所述队列管道的当前状态是否满足预设条件还包括:
若所述具有最高优先级的进程不为桌面进程,则查询当前所述队列管道中的磁盘访问请求的数量;
判断所述磁盘访问请求的数量是否大于预设数量阈值;
若所述磁盘访问请求的数量大于预设数量阈值,则判断所述队列管道的当前状态不满足预设条件;
若所述磁盘访问请求的数量不大于预设数量阈值,则判断所述队列管道的当前状态满足预设条件。
本发明实施例另一方面还提供一种内存回收装置,所述内存回收装置包括:
查询模块,用于接收内存回收请求,并查询访问磁盘的队列管道的当前状态;
判断模块,用于判断所述队列管道的当前状态是否满足预设条件;
内存回收模块,用于在所述队列管道的当前状态满足预设条件时,将所述内存回收请求加到所述队列管道中进行排队,以响应所述内存回收请求并将其对应的待回收的进程的内存数据写入到磁盘中进行保存。
进一步的,在本发明实施例提供的上述内存回收装置中,所述内存回收模块还用于在所述队列管道的当前状态不满足预设条件时,中止所述内存回收请求,并放弃回收所述内存回收请求对应的待回收的进程的内存数据。
进一步的,在本发明实施例提供的上述内存回收装置中,所述查询模块具体用于查询当前所述队列管道中的内存回收请求对应的进程中具有最高优先级的进程;
所述判断模块具体用于判断所述具有最高优先级的进程是否为桌面进程,以及用于在所述具有最高优先级的进程为桌面进程时,判断所述队列管道的当前状态不满足预设条件。
进一步的,在本发明实施例提供的上述内存回收装置中,所述查询模块具体还用于在所述具有最高优先级的进程不为桌面进程时,查询当前所述队列管道中的磁盘访问请求的数量;
所述判断模块具体还用于判断所述磁盘访问请求的数量是否大于预设数量阈值;
所述判断模块具体还用于在所述磁盘访问请求的数量大于预设数量阈值时,判断所述队列管道的当前状态不满足预设条件;以及用于在所述磁盘访问请求的数量不大于预设数量阈值时,判断所述队列管道的当前状态满足预设条件。
本发明实施例再一方面还提供一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现上述任一所述内存回收方法的步骤。
本发明实施例又一方面还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述内存回收方法的步骤。
本发明提供的内存回收方法在进行内存回收(即将内存数据写入到磁盘中进行保存)之前,根据访问磁盘的队列管道的当前状态决定是否响应内存回收请求,从而能够有效避免在内存回收时出现的磁盘访问的压力过大、系统卡顿等问题,并能够有效提升用户的使用体验。
附图说明
为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中进行内存回收的队列管道的示意图。
图2是本发明一实施方式提供的内存回收方法的流程图。
图3是图2所示的内存回收方法的步骤102的细化的流程图。
图4是本发明一实施方式提供的内存回收装置的结构示意图。
图5是本发明一实施方式提供的终端的结构示意图。
主要元件符号说明
终端 1
内存回收装置 10
查询模块 11
判断模块 12
内存回收模块 13
处理器 20
存储器 30
计算机程序 40
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施方式及实施方式中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本发明。
图2是本发明一实施方式提供的内存回收方法的流程图,所述内存回收方法应用于终端。所述终端可以是例如智能手机、笔记本电脑、台式/平板电脑等具有运行应用程序功能的计算机设备。应说明的是,本发明实施方式的所述内存回收方法并不限于图2所示的流程图中的步骤及顺序。根据不同的需求,所示流程图中的步骤可以增加、移除、或者改变顺序。
如图2所示,所述内存回收方法可以包括以下步骤:
步骤101,接收内存回收请求,并查询访问磁盘的队列管道的当前状态。
这里,可通过监测终端内安装的应用被用户操作使用的信息以及内存占用信息,并基于监测的终端内安装的应用被用户操作使用的信息以及内存占用信息中的至少一种,判断当前是否满足内存回收条件,若满足内存回收条件,则产生所述内存回收请求。
可以理解,当在应用程序中打开了一个文件并且修改了其中的文件页面内容,或者该文件的页面是匿名页面时,若需要对该页面进行内存回收时,则会将该页面内容写入到磁盘中进行保存。而当该文件的页面不是匿名页面,且对该文件页面没有做修改时,则释放该文件页面内容对应的内存资源,但不需要将该文件页面内容写入到磁盘中进行保存。
由于匿名页面是在特定条件(例如在linux内核版本的系统中打开swap功能)下才会进行内存回收,在本实施方式中,所述内存回收请求是指将被修改的文件页面的内存数据写入到磁盘中进行保存的请求。
步骤102,判断所述队列管道的当前状态是否满足预设条件。若所述队列管道的当前状态满足预设条件,则执行步骤103;若所述队列管道的当前状态不满足预设条件,则执行步骤104。
步骤103,将所述内存回收请求加到所述队列管道中进行排队,以响应所述内存回收请求并将其对应的待回收的进程的内存数据写入到磁盘中进行保存。
可以理解,这里所述的将内存数据写入到磁盘的操作是先将当前的内存回收请求放到这个“队列管道”中等待执行,如果此时队列管道中没有其它更高优先级的写磁盘操作的请求,则直接把当前的内存回收请求对应的待回收的进程的内存数据写入到磁盘中,否则需要排队等待,直到其它更高优先级的写磁盘操作全部完成。
步骤104,中止所述内存回收请求,并放弃回收所述内存回收请求对应的待回收的进程的内存数据。
本发明提供的内存回收方法在进行内存回收(即将内存数据写入到磁盘中进行保存)之前,根据访问磁盘的队列管道的当前状态决定是否响应内存回收请求,从而能够有效避免在内存回收时出现的磁盘访问的压力过大、系统卡顿等问题,并能够有效提升用户的使用体验。
图3是图2所示的内存回收方法的步骤102的细化流程图。如图3所示,所述步骤102具体包括:
步骤1021,查询当前所述队列管道中的内存回收请求对应的进程中具有最高优先级的进程。
步骤1022,判断所述具有最高优先级的进程是否为桌面进程。若所述具有最高优先级的进程为桌面进程,则执行步骤1023;若所述具有最高优先级的进程不为桌面进程,则执行步骤1024。
步骤1023,判断所述队列管道的当前状态不满足预设条件。
在本实施方式中,所述桌面进程是指前台应用。在所述队列管道中如果有桌面进程的内存回收请求在排队,则说明前台应用正在主动回收内存,此时判断所述队列管道的当前状态不满足预设条件,以中止所述内存回收请求,并放弃回收所述内存回收请求对应的待回收的进程的内存数据,目的是为了保证所述队列管道的通畅,确保所述前台应用的回收操作优先进行,且不需要等待太长时间,以减少系统卡顿的现象。
步骤1024,查询当前所述队列管道中的磁盘访问请求的数量。
步骤1025,判断所述磁盘访问请求的数量是否大于预设数量阈值。若所述磁盘访问请求的数量大于预设数量阈值,则执行步骤1023;若所述磁盘访问请求的数量不大于预设数量阈值,则执行步骤1026。
步骤1026,判断所述队列管道的当前状态满足预设条件。
在本实施方式中,通过查询当前所述队列管道中的磁盘访问请求的数量来判断所述队列管道的拥挤程度/繁忙程度,若所述磁盘访问请求的数量大于预设数量阈值,则判断所述队列管道处于拥挤/繁忙状态,并中止所述内存回收请求以放弃回收所述内存回收请求对应的待回收的进程的内存数据。若所述磁盘访问请求的数量不大于预设数量阈值,则判断所述队列管道处于通畅/空闲状态,并响应所述内存回收请求以将其对应的待回收的进程的内存数据写入到磁盘中进行保存,从而能够减轻磁盘访问的压力,以减少系统卡顿的现象。
本发明提供的内存回收方法在判断访问磁盘的队列管道的当前状态是否满足预设条件时,先判断所述队列管道中的请求对应的内存回收请求对应的进程中具有最高优先级的进程是否为桌面进程,以保证所述队列管道的通畅,确保所述前台应用的回收操作优先进行,且不需要等待太长时间,以减少系统卡顿的现象。在所述具有最高优先级的进程不为桌面进程时,则进一步通过查询当前所述队列管道中的磁盘访问请求的数量来判断所述队列管道的拥挤程度/繁忙程度,并根据所述队列管道的拥挤程度/繁忙程度来决定是否响应所述内存回收请求,以减轻磁盘访问的压力,并减少系统卡顿的现象。
图4是本发明一实施方式提供的内存回收装置的结构示意图,所述内存回收装置应用于终端。所述内存回收装置可以包括一个或多个模块,所述一个或多个模块被存储在终端的存储器中并被配置成由一个或多个处理器(本实施方式为一个处理器)执行,以完成本发明。例如,参阅图4所示,内存回收装置10可以包括查询模块11、判断模块12、以及内存回收模块13。本发明实施例所称的模块可以是完成一特定功能的程序段,比程序更适合于描述软件在处理器中的执行过程。
可以理解的是,对应于上述内存回收方法中的各实施方式,所述内存回收装置10可以包括图4中所示的各功能模块中的一部分或全部,各模块11~13的功能将在以下具体介绍。需要说明的是,以上内存回收方法的各实施方式中相同的名词相关名词及其具体的解释说明也可以适用于以下对各模块11~13的功能介绍。为节省篇幅及避免重复起见,在此就不再赘述。
所述查询模块11用于接收内存回收请求,并查询访问磁盘的队列管道的当前状态。
可以理解,所述内存回收装置10还可以包括监测模块(图未示)和内存回收请求生成模块(图未示),其中,所述监测模块可用于监测终端内安装的应用被用户操作使用的信息以及内存占用信息,所述内存回收请求生成模块可基于监测的终端内安装的应用被用户操作使用的信息以及内存占用信息中的至少一种,判断当前是否满足内存回收条件,若满足内存回收条件,则产生所述内存回收请求。
可以理解,当在应用中打开了一个文件并且修改了其中的文件页面内容时,若需要对该文件页面进行内存回收时,则会将该页面内容写入到磁盘中进行保存。而当对该文件页面没有被修改时,则释放该文件页面内容对应的内存资源,但不需要将该文件页面内容写入到磁盘中进行保存。
在本实施方式中,所述内存回收请求是指将内存数据写入到磁盘中进行保存的请求。
所述判断模块12用于判断所述队列管道的当前状态是否满足预设条件。
所述内存回收模块13用于在所述队列管道的当前状态满足预设条件时,将所述内存回收请求加到所述队列管道中进行排队,以响应所述内存回收请求并将其对应的待回收的进程的内存数据写入到磁盘中进行保存。
可以理解,这里所述的将内存数据写入到磁盘的操作是先将当前的内存回收请求放到这个“队列管道”中等待执行,如果此时队列管道中没有其它更高优先级的写磁盘操作的请求,则直接把当前的内存回收请求对应的待回收的进程的内存数据写入到磁盘中,否则需要排队等待,直到其它更高优先级的写磁盘操作全部完成。
在本实施方式中,所述内存回收模块13还用于在所述队列管道的当前状态不满足预设条件时,中止所述内存回收请求,并放弃回收所述内存回收请求对应的待回收的进程的内存数据。
本发明提供的内存回收装置在进行内存回收(即将内存数据写入到磁盘中进行保存)之前,根据访问磁盘的队列管道的当前状态决定是否响应内存回收请求,从而能够有效避免在内存回收时出现的磁盘访问的压力过大、系统卡顿等问题,并能够有效提升用户的使用体验。
在本实施方式中,所述查询模块11具体用于查询当前所述队列管道中的内存回收请求对应的进程中具有最高优先级的进程。
所述判断模块12具体用于判断所述具有最高优先级的进程是否为桌面进程,以及用于在所述具有最高优先级的进程为桌面进程时,判断所述队列管道的当前状态不满足预设条件。
在本实施方式中,所述桌面进程是指前台应用。在所述队列管道中如果有桌面进程的内存回收请求在排队,则说明前台应用正在主动回收内存,此时所述判断模块12判断所述队列管道的当前状态不满足预设条件,以使所述内存回收模块13中止所述内存回收请求,并放弃回收所述内存回收请求对应的待回收的进程的内存数据,目的是为了保证所述队列管道的通畅,确保所述前台应用的回收操作优先进行,且不需要等待太长时间,以减少系统卡顿的现象。
在本实施方式中,所述查询模块11具体还用于在所述具有最高优先级的进程不为桌面进程时,查询当前所述队列管道中的磁盘访问请求的数量。
所述判断模块12具体还用于判断所述磁盘访问请求的数量是否大于预设数量阈值。
在本实施方式中,所述判断模块12具体还用于在所述磁盘访问请求的数量大于预设数量阈值时,判断所述队列管道的当前状态不满足预设条件;以及用于在所述磁盘访问请求的数量不大于预设数量阈值时,判断所述队列管道的当前状态满足预设条件。
在本实施方式中,所述判断模块12通过查询当前所述队列管道中的磁盘访问请求的数量来判断所述队列管道的拥挤程度/繁忙程度,若所述磁盘访问请求的数量大于预设数量阈值,则判断所述队列管道处于拥挤/繁忙状态,并中止所述内存回收请求以放弃回收所述内存回收请求对应的待回收的进程的内存数据。若所述磁盘访问请求的数量不大于预设数量阈值,则判断所述队列管道处于通畅/空闲状态,并响应所述内存回收请求以将其对应的待回收的进程的内存数据写入到磁盘中进行保存,从而能够减轻磁盘访问的压力,以减少系统卡顿的现象。
本发明提供的内存回收装置在判断访问磁盘的队列管道的当前状态是否满足预设条件时,先判断所述队列管道中的请求对应的内存回收请求对应的进程中具有最高优先级的进程是否为桌面进程,以保证所述队列管道的通畅,确保所述前台应用的回收操作优先进行,且不需要等待太长时间,以减少系统卡顿的现象。在所述具有最高优先级的进程不为桌面进程时,则进一步通过查询当前所述队列管道中的磁盘访问请求的数量来判断所述队列管道的拥挤程度/繁忙程度,并根据所述队列管道的拥挤程度/繁忙程度来决定是否响应所述内存回收请求,以减轻磁盘访问的压力,并减少系统卡顿的现象。
本发明实施例还提供一种计算机装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施方式中所述的内存回收方法的步骤。
图5是本发明一实施方式提供的终端的示意图。如图5所示,终端1包括:处理器20、存储器30以及存储在所述存储器30中并可在所述处理器20上运行的计算机程序40(例如内存回收程序)。所述处理器20执行所述计算机程序40时实现上述各个内存回收方法实施方式中的步骤,例如图2所示的步骤101~104、或者图2所示的步骤1021~1026。所述处理器20执行所述计算机程序40时实现上述各装置实施方式中各模块/单元,例如模块11~13的功能。
示例性的,所述计算机程序40可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器30中,并由所述处理器20执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,所述指令段用于描述所述计算机程序40在所述终端1中的执行过程。例如,所述计算机程序40可以被分割成图4中的查询模块11、判断模块12以及内存回收模块13,各模块11~13的具体功能请参见前面的具体介绍,为节省篇幅及避免重复起见,在此就不再赘述。
所述终端1可以是智能手机、笔记本电脑、台式/平板电脑、个人数字助理等具有运行应用程序功能的计算机设备。本领域技术人员可以理解,所述示意图5仅仅是终端1的示例,并不构成对终端1的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端1还可以包括输入输出设备、网络接入设备、总线等。
所称处理器20可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者所述处理器20也可以是任何常规的处理器等,所述处理器20是所述内存回收装置10/所述终端1的控制中心,利用各种接口和线路连接整个内存回收装置10/终端1的各个部分。
所述存储器30用于存储所述计算机程序40和/或模块/单元,所述处理器20通过运行或执行存储在所述存储器30内的计算机程序和/或模块/单元,以及调用存储在所述存储器30内的数据,实现所述内存回收装置10/终端1的各种功能。所述存储器30可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1的使用所创建的数据(比如音频数据,电话本,应用上述内存回收方法而设置、获取的数据等)等。此外,所述存储器30可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施方式中所述的内存回收方法的步骤。
所述内存回收装置10/终端1/计算机装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施方式方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,所述计算机程序在被处理器执行时,可实现上述各个方法实施方式的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
在本发明所提供的几个具体实施方式中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的终端实施方式仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
另外,在本发明各个实施例中的各功能模块可以集成在相同处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在相同模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明实施例不限于上述示范性实施例的细节,而且在不背离本发明实施例的精神或基本特征的情况下,能够以其他的具体形式实现本发明实施例。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明实施例的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明实施例内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统、装置或终端权利要求中陈述的多个单元、模块或装置也可以由同一个单元、模块或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施方式仅用以说明本发明实施例的技术方案而非限制,尽管参照以上较佳实施方式对本发明实施例进行了详细说明,本领域的普通技术人员应当理解,可以对本发明实施例的技术方案进行修改或等同替换都不应脱离本发明实施例的技术方案的精神和范围。

Claims (8)

1.一种内存回收方法,其特征在于,所述内存回收方法包括:
接收内存回收请求,并查询访问磁盘的队列管道的当前状态;
判断所述队列管道的当前状态是否满足预设条件;
若所述队列管道的当前状态满足预设条件,则将所述内存回收请求加到所述队列管道中进行排队,以响应所述内存回收请求并将其对应的待回收的进程的内存数据写入到磁盘中进行保存;
所述判断所述队列管道的当前状态是否满足预设条件包括:
查询当前所述队列管道中的内存回收请求对应的进程中具有最高优先级的进程;
判断所述具有最高优先级的进程是否为桌面进程;
若所述具有最高优先级的进程为桌面进程,则判断所述队列管道的当前状态不满足预设条件。
2.如权利要求1所述的内存回收方法,其特征在于,所述内存回收方法还包括:
若所述队列管道的当前状态不满足预设条件,则中止所述内存回收请求,并放弃回收所述内存回收请求对应的待回收的进程的内存数据。
3.如权利要求1所述的内存回收方法,其特征在于,所述判断所述队列管道的当前状态是否满足预设条件还包括:
若所述具有最高优先级的进程不为桌面进程,则查询当前所述队列管道中的磁盘访问请求的数量;
判断所述磁盘访问请求的数量是否大于预设数量阈值;
若所述磁盘访问请求的数量大于预设数量阈值,则判断所述队列管道的当前状态不满足预设条件;
若所述磁盘访问请求的数量不大于预设数量阈值,则判断所述队列管道的当前状态满足预设条件。
4.一种内存回收装置,其特征在于,所述内存回收装置包括:
查询模块,用于接收内存回收请求,并查询访问磁盘的队列管道的当前状态;
判断模块,用于判断所述队列管道的当前状态是否满足预设条件;
内存回收模块,用于在所述队列管道的当前状态满足预设条件时,将所述内存回收请求加到所述队列管道中进行排队,以响应所述内存回收请求并将其对应的待回收的进程的内存数据写入到磁盘中进行保存;
所述查询模块具体用于查询当前所述队列管道中的内存回收请求对应的进程中具有最高优先级的进程;
所述判断模块具体用于判断所述具有最高优先级的进程是否为桌面进程,以及用于在所述具有最高优先级的进程为桌面进程时,判断所述队列管道的当前状态不满足预设条件。
5.如权利要求4所述的内存回收装置,其特征在于,所述内存回收模块还用于在所述队列管道的当前状态不满足预设条件时,中止所述内存回收请求,并放弃回收所述内存回收请求对应的待回收的进程的内存数据。
6.如权利要求4所述的内存回收装置,其特征在于,所述查询模块具体还用于在所述具有最高优先级的进程不为桌面进程时,查询当前所述队列管道中的磁盘访问请求的数量;
所述判断模块具体还用于判断所述磁盘访问请求的数量是否大于预设数量阈值;
所述判断模块具体还用于在所述磁盘访问请求的数量大于预设数量阈值时,判断所述队列管道的当前状态不满足预设条件;以及用于在所述磁盘访问请求的数量不大于预设数量阈值时,判断所述队列管道的当前状态满足预设条件。
7.一种计算机装置,其特征在于,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-3中任意一项所述的内存回收方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-3中任意一项所述的内存回收方法的步骤。
CN201710719984.2A 2017-08-21 2017-08-21 内存回收方法及装置、计算机装置及计算机可读存储介质 Active CN108228343B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710719984.2A CN108228343B (zh) 2017-08-21 2017-08-21 内存回收方法及装置、计算机装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710719984.2A CN108228343B (zh) 2017-08-21 2017-08-21 内存回收方法及装置、计算机装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN108228343A CN108228343A (zh) 2018-06-29
CN108228343B true CN108228343B (zh) 2020-11-17

Family

ID=62655168

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710719984.2A Active CN108228343B (zh) 2017-08-21 2017-08-21 内存回收方法及装置、计算机装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN108228343B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124254B (zh) * 2018-10-30 2023-09-29 伊姆西Ip控股有限责任公司 调度存储空间回收请求的方法、电子设备和程序产品
CN109582442A (zh) * 2018-11-30 2019-04-05 北京微播视界科技有限公司 内存溢出oom的处理方法、电子设备及计算机存储介质
CN110008016B (zh) * 2019-04-15 2021-06-22 深圳市万普拉斯科技有限公司 匿名页面管理方法、装置、终端设备及可读存储介质
CN110543384B (zh) * 2019-09-05 2022-05-17 Oppo广东移动通信有限公司 内存的回写方法、装置、终端及存储介质
CN111078586B (zh) * 2019-12-10 2022-03-01 Oppo(重庆)智能科技有限公司 内存回收方法、装置、存储介质及电子设备
CN111581119B (zh) * 2020-05-07 2022-11-18 Oppo(重庆)智能科技有限公司 页面回收方法及装置
CN111708713B (zh) * 2020-05-20 2022-07-05 杭州电子科技大学 一种固态硬盘智能垃圾回收与调度方法
CN112003915A (zh) * 2020-08-14 2020-11-27 苏州浪潮智能科技有限公司 一种文件的访问方法、装置、设备及可读介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150259A (zh) * 2013-03-22 2013-06-12 华为技术有限公司 一种内存回收方法和装置
CN103365784A (zh) * 2013-06-27 2013-10-23 华为技术有限公司 内存回收与分配的方法及装置
CN103399856A (zh) * 2013-07-01 2013-11-20 北京科东电力控制系统有限责任公司 面向scada系统的爆发式数据缓存处理系统及其方法
CN105701025A (zh) * 2015-12-31 2016-06-22 华为技术有限公司 一种内存回收方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104008061B (zh) * 2013-02-22 2018-01-23 华为技术有限公司 内存回收方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150259A (zh) * 2013-03-22 2013-06-12 华为技术有限公司 一种内存回收方法和装置
CN103365784A (zh) * 2013-06-27 2013-10-23 华为技术有限公司 内存回收与分配的方法及装置
CN103399856A (zh) * 2013-07-01 2013-11-20 北京科东电力控制系统有限责任公司 面向scada系统的爆发式数据缓存处理系统及其方法
CN105701025A (zh) * 2015-12-31 2016-06-22 华为技术有限公司 一种内存回收方法及装置

Also Published As

Publication number Publication date
CN108228343A (zh) 2018-06-29

Similar Documents

Publication Publication Date Title
CN108228343B (zh) 内存回收方法及装置、计算机装置及计算机可读存储介质
US8990534B2 (en) Adaptive resource management of a data processing system
US9619378B2 (en) Dynamically optimizing memory allocation across virtual machines
US11093297B2 (en) Workload optimization system
EP3631628A1 (en) Method and apparatus for implementing virtual gpu and system
CN102027453B (zh) 用于在虚拟环境中优化中断处理的系统和方法
CN113918101B (zh) 一种写数据高速缓存的方法、系统、设备和存储介质
WO2019218708A1 (zh) 一种任务处理方法及处理装置、计算机系统
US11360884B2 (en) Reserved memory in memory management system
CN108228344B (zh) 多进程内存处理方法及装置、计算机装置及可读存储介质
CN104111897A (zh) 一种数据处理方法、装置及计算机系统
CN106777394B (zh) 一种集群文件系统
US9817754B2 (en) Flash memory management
US10459771B2 (en) Lightweight thread synchronization using shared memory state
US20190227918A1 (en) Method for allocating memory resources, chip and non-transitory readable medium
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
EP2869189A1 (en) Boot up of a multiprocessor computer
CN115981685A (zh) 应用升级方法、装置、计算设备和芯片系统
US11436141B2 (en) Free memory page hinting by virtual machines
CN105677481A (zh) 一种数据处理方法、系统及电子设备
US20130247065A1 (en) Apparatus and method for executing multi-operating systems
CN113268356B (zh) 基于LINUX系统的多GPU板卡bounding的系统、方法及介质
CN115509704A (zh) 一种任务调度方法、装置、设备及存储介质
US20220066827A1 (en) Disaggregated memory pool assignment
CN114528123A (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
GR01 Patent grant
GR01 Patent grant