CN108228342B - 终端设备控制方法及装置、终端设备及计算机可读存储介质 - Google Patents
终端设备控制方法及装置、终端设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN108228342B CN108228342B CN201710681459.6A CN201710681459A CN108228342B CN 108228342 B CN108228342 B CN 108228342B CN 201710681459 A CN201710681459 A CN 201710681459A CN 108228342 B CN108228342 B CN 108228342B
- Authority
- CN
- China
- Prior art keywords
- memory
- physical page
- value
- activity
- target
- 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
Links
Images
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- 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/4401—Bootstrapping
- G06F9/442—Shutdown
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72448—User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions
- H04M1/72454—User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions according to context-related or environment-related conditions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Environmental & Geological Engineering (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Feedback Control In General (AREA)
- Memory System (AREA)
Abstract
本发明提供一种终端设备控制方法及装置、终端设备及计算机可读存储介质,该方法包括判断系统可使用内存是否低于预设阈值,如是,获取正在运行的目标应用程序,并对目标应用程序执行内存回收操作;其中,预设阈值高于进程关闭模块执行进程关闭操作的触发阈值。该装置用于实现上述的终端设备控制方法。本发明提供的终端设备具有处理器以及存储器,处理器执行计算机程序时可以实现上述的终端设备控制方法。本发明的计算机可读存储介质上存储有用于实现上述方法计算机程序。本发明可以在系统的可使用内存减小至触发阈值前对目标应用程序进行内存回收操作,避免进程关闭模块关闭正在运行的进程。
Description
技术领域
本发明涉及电子设备的控制领域,具体地,是在一种在终端设备上实现终端设备控制方法以及实现这种方法的装置,还涉及一种实现上述方法的终端设备以及计算机可读存储介质。
背景技术
智能手机、平板电脑等终端设备成为人们日常生活中最经常使用的电子设备,人们喜欢在智能电子设备上安装各种应用程序,并且在终端设备上同时运行大量的应用程序。而终端设备的操作系统中,为了加快对磁盘进行读写操作的速度,通常会将大量的数据缓存在内存中。进程在使用内存前,需要提出申请并开始占用内存,当使用完内存后再及时回收内存。由于用户在使用终端应用的过程中,经常会频繁更换应用,为了减少用户的等待时长,操作系统通常会为转入后台的应用进程保留其占用的内存。但是,当后台应用过多,内存被大量占用而得不到回收时,会因为内存分配不足导致操作系统运行出现异常。
为了避免因内存分配不足导致的系统异常,操作系统采用两种处理方式,一是引入了对内存的回收机制。例如,当内存不足时,系统会关闭一些后台进程来回收其占用的内存。但是,当用户需要使用这些进程对应的应用程序时,这些进程需要完全的进行重新加载,耗时长,降低用户体验。因此,现有技术提出在不关闭进程的情况下进行内存回收的方法。近期最少使用链表LRU,将物理页按照近期的使用情况进行排列,当内存不足时,系统会优先对其中的INACTIVE_ANON和INACTIVE_FILE这两个链表中的物理页进行回收。ANON代表匿名映射,没有后备存储器,FILE代表文件映射,INACTIVE代表处于非活动状态。当进程需要使用回收的物理页上的内容时,只要从磁盘中加载相应内容即可,减少耗时。但是,前台运行的应用进程或者后台运行的优先级高的应用进程,其占用的物理页也可能处于INACTIVE_ANON和INACTIVE_FILE这两个链表中,对这两个链表中的物理页进行回收可能会影响这两类应用的正常运行,降低用户体验。
为了保证前台应用进程和后台运行的优先级高的应用进程的正常运行,现有技术提出针对进程进行内存回收的方法,首先获取目标进程的物理页,之后查找未被目标进程使用的目标物理页并回收目标物理页。但是在现有的对进程进行内存回收的方法中,其回收的目标物理页仅仅针对未被目标进程使用的目标物理页,目标物理页主要是目标进程在INACTIVE_ANON和INACTIVE_FILE这两个链表中的物理页,也就是非活动状态的物理页,这种方法的内存回收效率很低。
第二种处理方式是设置进程管理器以管理多个进程的运行,并且设置进程关闭模块,如lowmemorykiller进程。终端设备设有进程管理器,用于记录多个进程的优先级。当终端设备的系统内存过低时,如低于设定的阈值时,进程关闭模块,如lowmemorykiller进程将从多个正在运行的进程中选择优先级最低的进程,如ADJ值最高的进程,并且将选择的进程强制关闭。在进程关闭模块将被选择的进程强制关闭后,该进程占用的内存资源被释放,终端设备可以较快处理正在运行的进程,避免智能电子设备长时间运行缓慢的情况。
然而,由于进程关闭模块往往只是选择优先级较低且占用内存资源较多的进程,而不查看进程的运行状态,有可能因关闭的进程正处于特殊的状态而导致无法关闭被选择的进程,导致内存资源无法有效地释放。此外,如果终端设备经常运行大量的应用程序并且经常通过进程关闭模块来关闭正在运行的进程,也会影响终端设备的正常工作。
发明内容
本发明的第一目的是提供一种可以有效避免终端设备频繁通过进程关闭模块对进程执行关闭操作的终端设备控制方法。
本发明的第二目的是提供一种有效回收内存资源的终端设备控制装置。
本发明的第三目的是提供一种能够实现上述终端设备控制方法的终端设备。
本发明的第四目的是提供一种被处理器读取并执行时能够实现上述终端设备控制方法的计算机可读存储介质。
为了实现上述的第一目的,本发明提供的终端设备控制方法包括判断系统可使用内存是否低于预设阈值,如是,获取正在运行的目标应用程序,并对目标应用程序执行内存回收操作;其中,预设阈值高于进程关闭模块执行进程关闭操作的触发阈值。
由上述方案可见,在系统可使用内存减小到进程关闭模块执行进程关闭操作的触发阈值前,先对正在运行的目标应用程序进行内存回收操作,从而回收一部分内存,避免操作系统的可使用内存继续减小以至于进程关闭模块对进程执行关闭操作。
一个优选的方案是,对目标应用程序执行内存回收操作包括:对目标应用程序执行第一次内存回收操作,并判断第一次内存回收操作所回收的内存是否低于回收阈值,如是,对目标应用程序执行第二次内存回收操作。
由此可见,如果第一次内存回收操作所回收的内存量过少,则需要执行第二次内存回收操作,从而确保回收更多的内存,避免操作系统内存继续减小。
进一步的方案是,对目标应用程序执行第二次内存回收操作后,判断终端设备是否进入熄屏状态,如是,对目标应用程序执行第三次内存回收操作。
可见,在终端设备进入熄屏状态后,对目标应用程序执行第三次内存回收操作,从而更加有效的回收应用程序所占用的内存。
优选的,确定系统可使用内存低于预设阈值后,获取正在运行的目标应用程序前,还执行:获取上一次执行内存回收操作的时间,计算上一次执行内存回收操作的时间至确定系统可使用内存低于预设阈值之间的时间长度,确定时间长度大于预设的时间长度阈值。
由此可见,如果上一次执行内存回收操作的时间至确定系统可使用内存低于预设阈值之间的时间长度小于时间长度阈值,则继续执行内存回收操作能够回收的内存不多,此时没有必要继续执行内存回收操作,通过进程关闭模块执行进程关闭操作能够更加有效的回收内存,因此,在这种情况下不再对目标应用程序执行内存回收操作,以充分利用操作系统的既定机制回收内存。
优选的,判断系统可使用内存是否低于预设阈值前,还执行:获取进程关闭模块执行进程关闭操作的触发阈值,并获取系统总内存量,根据系统总内存量确定内存调节值;预设阈值为触发阈值与内存调节值之和。进一步的,内存调节值与系统总内存量正相关。
由此可见,根据终端设备的总内存量确定内存调节值,当终端设备的总内存量越大,内存调节值也越大,预设阈值也越大,从而实现对不同终端设备的差异化处理。
进一步的方案是,对目标应用程序执行一次内存回收操作包括:获取目标应用程序正在运行的目标进程,并获取目标进程对应的目标物理页;读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关;若目标物理页的活跃度的值高于回收标准,且活跃度的值高于回收标准的物理页处于活动状态,则降低目标物理页的活跃度;再次读取目标物理页的活跃度的值;若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
由上述方案可见,在获取目标进程对应的目标物理页之后,若目标物理页的活跃度的值高于回收标准,可以降低目标物理页的活跃度,并在目标物理页的活跃度不高于回收标准时,对目标物理页进行回收。这样,即使目标物理页为活动状态的物理页,本发明也有机会对目标物理页进行回收,相比于现有技术,本发明大大扩展了内存回收的对象,提高了内存回收效率。
进一步的,在降低目标物理页的活跃度之后,在读取目标物理页的活跃度的值之前,开启计时器;当计时器记录的时长达到预设时长时,触发读取目标物理页的活跃度的值的步骤。
进一步的,开启计时器之前,根据内存占用率设置预设时长,预设时长与内存占用率负相关;或者,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
进一步的,活跃度的可选值至少包括第一值、第二值和第三值,第一值不高于回收标准,第二值低于第三值,且高于回收标准。
进一步的,降低目标物理页的活跃度包括:当目标物理页的活跃度为第三值时,将目标物理页的活跃度设置为第二值;当目标物理页的活跃度为第二值时,将目标物理页的活跃度设置为第一值。
进一步的,降低目标物理页的活跃度包括:当目标物理页为匿名页时,按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,按照第二幅度降低目标物理页的活跃度;第一幅度低于第二幅度。
为实现上述的第二目的,本发明提供的终端设备控制装置包括判断模块,用于判断系统可使用内存是否低于预设阈值;内存回收模块,用于确定系统可使用内存低于预设阈值时,获取正在运行的目标应用程序,并对目标应用程序执行内存回收操作;其中,预设阈值高于进程关闭模块执行进程关闭操作的触发阈值。
进一步的,内存回收模块包括:获取模块,用于获取目标进程对应的目标物理页;第一读取模块,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关;降低模块,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,活跃度的值高于回收标准的物理页处于活动状态;第二读取模块,用于在降低模块降低目标物理页的活跃度之后,再次读取目标物理页的活跃度的值;回收模块,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
进一步的,内存回收模块还包括第一设置模块,用于在计时模块开启计时器之前,根据内存占用率设置预设时长,预设时长与内存占用率负相关;或者,第二设置模块,用于在计时模块开启计时器之前,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
进一步的,活跃度的可选值至少包括第一值、第二值和第三值,第一值不高于回收标准,第二值低于第三值,且高于回收标准。
进一步的,降低模块包括:设置单元,用于当目标物理页的活跃度为第三值时,将目标物理页的活跃度设置为第二值;当目标物理页的活跃度为第二值时,将目标物理页的活跃度设置为第一值。
进一步的,降低模块包括:降低单元,用于当目标物理页为匿名页时,按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,按照第二幅度降低目标物理页的活跃度;第一幅度低于第二幅度。
为实现上述的第三目的,本发明提供的终端设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现上述终端设备控制方法的各个步骤。
为实现上述的第四目的,本发明提供的计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述终端设备控制方法的各个步骤。
附图说明
图1是本发明终端设备控制方法实施例的流程图。
图2是本发明终端设备控制方法实施例中对计算预设阈值的流程图。
图3是本发明终端设备控制方法实施例中的对目标应用程序的目标进程内存回收的第一种方式的流程图。
图4是本发明终端设备控制方法实施例中的对目标应用程序的目标进程内存回收的第二种方式的流程图。
图5是本发明终端设备控制方法实施例中的对目标应用程序的目标进程内存回收的第三种方式的流程图。
图6是本发明终端设备控制方法实施例中的对目标应用程序的目标进程内存回收的第四种方式的流程图。
图7是本发明终端设备控制装置实施例的结构框图。
图8是本发明终端设备控制装置实施例的内存回收模块一种方式的结构框图。
图9是本发明终端设备控制装置实施例的内存回收模块另一种方式的结构框图。
图10是本发明终端设备实施例的结构框图。
以下结合附图及实施例对本发明作进一步说明。
具体实施方式
本发明终端设备控制方法是应用在诸如智能手机或者平板电脑等终端设备上,用于实现应用程序所占用的内存的回收。本发发明的终端设备控制装置运行在终端设备上,并且用于实现上述的终端设备控制方法。
由于用户在使用应用程序的过程中,经常会频繁更换所使用的应用程序,例如利用视频播放软件观看视频的过程中,可能需要频繁的将聊天应用切换到前台,为了减少用户的等待时长,操作系统通常会为转入后台的应用进程保留其占用的内存。但是,当后台运行的应用程序过多,终端设备的内存被大量占用而得不到释放时,会因为内存分配不足导致操作系统运行出现异常。
终端设备可以通过关闭应用程序来进行内存回收,也可以通过不关闭应用程序,而是对应用程序的进程进行内存回收的方式进行内存回收。当然,操作系统还设置有强制关闭进程的机制以回收内存,也就是操作系统设置了诸如lowmemorykiller的进程关闭模块以强制关闭正在运行的进程,从而回收这些进程所占用的内存。通常,只有操作系统的可使用内存减小到一个阈值时,进程关闭模块才会被触发并且执行进程的关闭操作,本文中,进程关闭模块被触发的条件的可使用内存阈值被称为触发阈值。通常,操作系统会默认设置该触发阈值,例如200M或者300M,也就是,当操作系统的可使用内存减小至200M或者300M时,进程关闭模块才会被触发并且执行进程关闭操作。
然而,如果频繁的通过进程关闭模块强行的将进程关闭,可能导致终端设备运行的不稳定,为了避免进程关闭模块被频繁的触发,本发明提供一种可以在进程关闭模块被触发前对正在运行的应用程序执行内存回收操作的方法,以避免终端设备的内存继续减小并触发进程关闭模块,从而避免进程关闭模块被频繁触发。参见图1,本发明的终端设备控制方法包括以下步骤:
步骤S101,判断系统可使用内存是否低于预设阈值,如是,转入步骤S102。
如果操作系统运行有大量的应用程序,可使用内存将不断减小,因此操作系统将实时监测操作系统可使用内存的情况,并且实时判断可使用内存是否小于预设阈值。本实施例中,预设阈值是一个高于触发阈值的数值,例如,触发阈值是200M或者300M,则预设阈值是在触发阈值的基础上上增加一定数值,如增加150M,因此预设阈值可以是350M或者450M。
当然,预设阈值是操作系统预先设定的阈值,预设阈值的确定过程将在下文详细论述。或者,预设阈值由用户自行设定,当然,如果由用户自行设定预设阈值时,则需要确保用户自行设定的预设阈值不低于触发阈值。
在步骤S101中,如果确定终端设备可使用的内存小于预设阈值,则需要对正在运行的应用程序执行内存回收操作,以回收终端设备的内存。但是,如果在确定终端设备可使用的内存小于预设阈值前很短时间内已经执行过一次内存回收操作,则表示在很短时间前曾经执行过一次内存回收操作,此时,可回收的内存非常少,如果再次执行内存回收操作可回收的内存不多,此时可以不做任何处理,直接等待终端设备的内存继续减小并且由进程关闭模块对进程进行关闭操作,从而回收内存。基于这一考虑,本实施例中需要执行步骤S102以及步骤S103。
步骤S102,获取上一次执行内存回收操作的时间。
在确定终端设备可使用的内存小于预设阈值后,获取上一次执行内存回收操作的时间,也就是获取上一次对目标应用程序执行内存回收操作的时间。例如,终端设备将记录每一次对目标应用程序执行内存回收操作的时间,因此,在确定终端设备可使用的内存小于预设阈值后,可以通过查询记录即可以获取上一次对目标应用程序执行内存回收操作的时间。
步骤S103,判断上一次执行内存回收操作时间至确定终端设备可使用内存小于预设阈值的时间之间的时间长度是否大于时间阈值,如是,转入步骤S104。
在获取上一次执行内存回收操作时间后,即可以计算出从上一次执行内存回收操作时间至确定终端设备可使用内存小于预设阈值的时间之间的时间长度。例如,上一次执行内存回收操作的时间是4:30,而确定终端设备可使用内存小于预设阈值的时间是5:12,则从上一次执行内存回收操作时间至确定终端设备可使用内存小于预设阈值的时间之间的时间长度为42分钟。
在计算该时间长度后,对比该时间长度与预设时间长度的大小。本实施例中,预设时间长度是操作系统默认设置的时间长度,如30分钟。预设时间长度也可以是用户自行设置的时间长度,优选的,预设时间长度应该具有一定的时间跨度,例如10分钟以上,因为连续两次内存回收操作之间的时间长度过短,第二次执行的内存回收操作时,应用程序并未产生大量的碎片,且活跃页面也未能及时老化,因此可以回收的物理页不多,导致第二次执行的内存回收操作并不能有效的回收大量的内存。
如果步骤S103中,确定上一次执行内存回收操作时间至确定终端设备可使用内存小于预设阈值的时间之间的时间长度小于时间阈值,如计算的时间长度是12分钟,时间阈值是30分钟,则不需要对目标应用程序执行内存回收操作,让操作系统的内存继续减小,等到操作系统的内存减小至触发阈值时,由进程关闭模块对进程执行关闭操作,从而回收这些进程所占用的内存。
步骤S104,执行第一次内存回收操作。
如果步骤S103中,确定上一次执行内存回收操作时间至确定终端设备可使用内存大于预设阈值的时间之间的时间长度小于时间阈值,则执行第一次内存回收操作。执行内存回收操作时,可以获取正在运行的目标应用程序,并且获取目标应用程序的目标进程,获取目标应用程序的进程列表,从进程列表中获取正在执行的目标进程。然后获取目标进程对应的物理页,并且识别出物理页中的非活跃物理页,将非活跃物理页进行回收。但是,如果仅仅对非活跃物理页进行回收,则内存回收的效率很低,往往导致无法充分回收内存,因此,本发明还提出一种对活跃物理页进行内存回收的方法,具体的回收方法将在下文详细论述。
需要说明的是,步骤S104中,执行内存回收操作是对终端设备正在运行的应用程序执行内存回收操作,可以是针对一个或者若干个特定的应用程序执行内存回收操作,也可以针对全部运行的且可执行内存回收操作的应用程序执行内存回收操作。优选的,针对全部可以执行内存回收操作的应用程序执行内存回收操作。
本文所指的可以执行内存回收操作的应用程序是没有限制执行内存回收操作的应用程序,例如,部分应用程序是系统运行必要应用程序,或者系统设定的禁止执行内存回收操作的应用程序,这些应用程序将不能被执行内存回收操作。除了被限制执行内存回收操作的应用程序,都应该被执行内存回收操作,从而回收更多的内存。
步骤S105,判断回收的内存是否低于回收阈值,如是,转入步骤S106。
对目标应用程序执行第一次内存回收操作后,判断第一次内存回收操作所回收的内存是否低于回收阈值。本实施例中,回收阈值是一个预先设定的阈值,如100M或者80M,当然,回收阈值可以是系统默认的阈值,也可以是用户自行设定的阈值。
需要说明的是,步骤S105所判断的回收的内存是对全部能够执行内存回收操作的应用程序执行内存回收操作以后,多个应用程序一共回收的内存,而不是某一个应用程序所回收的内存。
如果步骤S105中,确定回收的内存高于回收阈值,则表示终端设备已经回收足够的内存,结束流程。
步骤S106,执行第二次内存回收操作。
如果步骤S105中,确定执行第一次内存回收操作所回收的内存低于回收阈值,在需要执行第二次内存回收操作。执行第二次内存回收操作的具体操作流程与第一次内存回收操作的操作流程相同,再次不再赘述。
需要说明的是,第二次内存回收操作的执行时间可以是紧接在第一次内存回收操作之后,这样,通过连续两次的内存回收操作可以回收更多的内存。当然,在执行第一次内存回收操作以后,可以设置一个间隔时间,如5分钟或者10分钟,执行第一内存回收操作后需要经过间隔时间以后才执行第二次内存回收操作。
步骤S107,判断终端设备是否进入熄屏状态,如是,执行步骤S108。
在执行第二次内存回收操作以后,还可以判断终端设备当前的状态,如监测终端设备是否进入熄屏状态。例如,用户按下电源键,则终端设备的触摸屏被关闭,也就是进行熄屏状态。通常,终端设备进入熄屏状态表示用户未来一段较长的时间不需要终端设备,因此,在进入熄屏状态后,可以再执行一次内存回收操作。
步骤S108,执行第三次内存回收操作。
由于终端设备进入熄屏状态后,仍有大量应用程序在后台运行,且这些后台运行的应用程序仍占有大量的内存资源。并且,由于终端设备进入熄屏状态后,用户将有一段较长的时间不使用终端设备,因此可以执行第三次内存回收操作,以充分回收终端设备的内存。
当然,在步骤S107中,如果终端设备没有进入熄屏状态,则不需要执行第三次内存回收操作,继续等待终端设备进入熄屏状态,或者根据终端设备当前的状态执行其他操作。
可见,终端设备在内存减小至触发阈值前,先执行一次或者多次的内存回收操作,从而避免终端设备的可使用内存减小至触发阈值,避免终端设备频繁的通过进程关闭模块对进程执行关闭操作,减小对应用程序运行的影响,确保终端设备运行的稳定性。
下面结合图2介绍确定预设阈值的流程。
步骤S201,获取进程关闭模块执行进程关闭操作的触发阈值。
当操作系统的内存低于某一设定值时,将触发进程关闭模块,如lowmemorykiller,对优先级别较低并且占用大量内存资源的进程执行关闭操作,因此,操作系统将默认设置触发阈值。当操作系统判定当前可使用内存低于触发阈值时,将通过进程关闭模块执行进程关闭操作。因此,步骤S201就是获取该触发阈值。
步骤S202,获取系统总内存量。
每一台终端设备均有自身的总内存量,通常,总内存量是由终端设备的硬件决定的,并且总内存量固定存储在存储器中,因此,步骤S202通过读取终端设备自身的参数即可以获取系统总内存量。通常,终端设备的总内存量是2G或者3G,甚至在4G或者以上。
步骤S203,确定内存调节值。
在获取系统总内存量后,根据所获取的系统总内存量确定内存调节值。本实施例中,内存调节值是用于计算预设阈值的值,内存调节值与系统总内存量相关,例如,系统总内存量越大,内存调节值也越大,可以理解,内存调节值与系统总内存量正相关。
例如,当确定系统总内存量为2G时,内存调节值可以设置为100M,当系统总内存量为3G时,内存调节值可以设置为150M,当系统总内存量为4G以上时,内存调节值可以设置为200M。或者,可以将内存调节值设定为系统总内存量的5%或者8%。当然,还可以使用其他方式确定内存调节值,本文并不对此进行限制。
步骤S204,计算预设阈值。
在确定内存调节值后,通过触发阈值以及内存调节值计算预设阈值,具体的,预设阈值是触发阈值与内存调节值之和。例如,触发阈值是200M,内存调节值是100M,则计算的预设阈值是300M,如此类推。
可见,本实施例中,在系统的可使用内存减小至触发阈值前,先对正在运行的目标应用程序执行内存回收操作,从而避免系统的可使用内存降低至触发阈值,也就是避免系统通过进程关闭模块强行将正在运行的进程关闭,确保终端设备的运行稳定性。
本发明对目标应用程序进行的内存回收操作首先是获取目标应用程序当前正在运行的目标进程,如获取目标应用程序的进程列表,从而确定目标应用程序当前正在运行的目标进程,然后分别对每一目标进程执行一次内存回收操作。执行内存回收操作主要是对物理页进行回收,而判断物理页存储数据的价值高低可以有很多角度,现有技术通常以物理页的活跃程度(或称活跃度)高低来评价物理页存储数据的价值高低,物理页的活跃度越高,系统通常认为该物理页存储数据的价值越高。为了比较物理页的活跃度,现有技术引入近期最少使用链表LRU,是按照近期的使用情况排列的,最少使用的存在链表末尾。INACTIVE_ANON、ACTIVE_ANON、INACTIVE_FILE和ACTIVE_FILE这 4个链表中的物理页是可以回收的,ANON代表匿名映射,FILE代表文件映射,INACTIVE代表处于非活动状态,ACTIVE代表处于活动状态,ACTIVE链表中的物理页的活跃度高于INACTIVE链表中的物理页,也就是说,处于活动状态的物理页,它的活跃度高于处于非活动状态的物理页。当内存不足时,系统会优先对LRU中的INACTIVE_ANON和INACTIVE_FILE这两个链表中的物理页进行回收,当进程需要使用回收的物理页上的内容时,需要从磁盘中加载相应内容。
但是,前台运行的应用进程或者后台运行的优先级高的应用进程,其占用的物理页也可能处于INACTIVE_ANON和INACTIVE_FILE这两个链表中,对这两个链表中前台进程和后台优先级高的进程对应的物理页进行回收,会更大程度的增加系统磁盘读写的次数,并且,增加用户的等待时长,降低用户体验。
可见,应用进程也应作为评价物理页价值高低的一个权重。为此,现有技术提出针对进程进行内存回收的方法,首先选定作为内存回收对象的目标进程,并获取目标进程的物理页,之后查找未被目标进程使用的目标物理页并回收目标物理页,未被目标进程使用的目标物理页主要指处于非活动状态的物理页。
在实际场景测试中,对于一个退到后台一分钟的进程,对其占用的所有物理页进行回收,其中,该进程在INACTIVE_ANON和INACTIVE_FILE链表中的物理页只占用到所有物理页比例的5%,而大部分物理页是该进程在ACTIVE_ANON和ACTIVE_FILE链表中的物理页。可见,现有的针对进程进行内存回收的方法回收效率很低。
为了提高回收效率,需要对ACTIVE_ANON和ACTIVE_FILE链表中的物理页进行选择性回收,优选的,便是回收其中价值较低的物理页,或者说,活跃度较低的物理页。因此,本实施例针对目标应用程序的目标进行内存回收时,采用如图3所示的步骤:
步骤S301,获取目标进程对应的目标物理页。
获取进程对应的物理页的方式可以根据进程识别号PID,找到进程的虚拟内存空间VMA,遍历VMA可以找到进程对应的物理页,还可以通过其他方式查找进程对应的物理页,此处不做具体限定。目标物理页可以为目标进程对应的全部物理页,也可以为目标进程对应的部分物理页。对目标进程的回收可以通过串行方式进行,也就是说每次回收只选择一个物理页作为目标物理页,执行本发明的回收流程,或者也可以通过并行方式进行,也就是说同时选择多个物理页作为目标物理页,对多个物理页同时执行本发明的回收流程。
步骤S302,读取目标物理页的活跃度的值。
获取目标进程对应的目标物理页之后,可以读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关,也就是说,物理页的活动程度越高,则其活跃度的值越大。并且,物理页的活跃度的可选值应不少于两个。
需要说明的是,活跃度的值可以为数值,此时可以按照数值大小确定活跃度的值的大小,但是,活跃度的值不应仅限为数值,只要根据预设的比较标准能够判定不同值的高低即可。
步骤S303,若目标物理页的活跃度的值高于回收标准,则降低目标物理页的活跃度,活跃度的值高于回收标准的物理页处于活动状态。
读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,回收标准可以视为是活动状态的物理页的活跃度和非活动状态的物理页的活跃度之间边界值。若判定目标物理页的活跃度的值高于回收标准,则可以降低目标物理页的活跃度,若判定目标物理页的活跃度的值不高于回收标准,则可以执行其他操作,比如回收目标物理页。
步骤S304,再次读取目标物理页的活跃度的值。
在步骤S303之后,可以读取目标物理页的活跃度的值。若在步骤S304之前,在步骤S303中所读取的目标物理页被访问,则该目标物理页的活跃度的值会增加。如果在步骤S304之前,在步骤S303中所读取的目标物理页没有被访问,则目标物理页的活跃度的值将维持步骤S303操作后,即被降低活跃度之后的值。
步骤S305,若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
再次读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。若目标物理页的活跃度的值不高于回收标准时,表明目标物理页处于非活动状态,现有技术有很多对非活动状态的物理页进行回收的方法,因此本实施例不再赘述对非活动状态的物理页的回收方法。
当然,在第一种内存回收方式中,如果步骤S303和步骤S304之间的时间间隔极短,极限情况下,可以理解成步骤S303降低目标物理页的活跃度之后,直接执行步骤S304读取目标物理页的活跃度的值,若活跃度的可选值只有两个,这样,几乎所有目标进程对应的处于活动状态的物理页均被回收,相当于系统自动关闭目标进程,增加用户等待时长。因此,需要在第一实施例中增加反悔机制,比如在步骤S303和步骤S304之间设定适当的时间间隔,作为反悔时长,在设定的时间间隔内若目标物理页被访问,则其活跃度的值升高,降低被回收的可能性,有利于防止活跃度较高的物理页被回收。基于这种思路,本发明对目标应用程序的目标进程内存回收方法第二种方式的流程图如图4所示。
步骤S401,获取目标进程对应的目标物理页。
步骤S402,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
反悔时长也可以称作预设时长,可以是系统默认的固定时长,优选的,在确定针对目标进程进行回收之后,可以读取目标进程优先级,并根据目标进程的优先级设置预设时长,以使得预设时长与目标进程的优先级正相关,也就是说,优先级越高的进程,为其设置的预设时长越长。
或者,也可以根据内存占用率设置预设时长,预设时长与内存占用率负相关,也就是说,内存占用率越高,则预设时长越短,回收效率越高,以尽快回收更多内存。
步骤S403,读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关。
步骤S404,判断目标物理页的活跃度的值是否高于回收标准,若是,则执行步骤S405,若否,则执行步骤S407。
在读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,若是,则执行步骤S405,若否,则执行步骤S407。
步骤S405,降低目标物理页的活跃度。
若判定目标物理页的活跃度的值高于回收标准,则可以降低目标物理页的活跃度。
步骤S406,开启计时器。
降低目标物理页的活跃度之后,可以开启计时器,记录时长。当计时器记录的时长到达预设时长时,重复执行步骤S403至步骤S404可以只重复一次,也就是说,若第一次重复执行步骤S404时,仍然判定目标物理页的活跃度的值高于回收标准,则不再执行步骤S405,而是直接退出对目标物理页的回收流程,也就是说,对活动状态的物理页只进行一次回收尝试。为了提高回收效率,回收更多的内存,优选的,对活动状态的物理页进行两次或两次以上的回收尝试,也就是说,可以对步骤S403至步骤S404重复执行两次或两次以上。
重复次数可以预设为某个有限数值,实际场景测试结果表明,前三次回收尝试的回收效率更高,第四次及之后的回收尝试回收效率很低,因此重复次数可以设置为三次。另外,也可以根据内存占用率设置重复次数,内存占用率越高,回收次数越多。或者,在实际使用中,也可以根据其他考虑对重复次数进行设置,本实施例对此不做限定。
需要说明的是,步骤S402在本发明实施例中的执行顺序并不限于上述描述的顺序,由于预设时长用于步骤S406,因此,只要在步骤S406之前执行即可,具体时序不做限定。
步骤S407,回收目标物理页。
若步骤S404判定目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
本发明所设置的反悔机制,除了如第二种实施方法中,通过设定适当的时间间隔,作为反悔时长,以尽量防止活跃度较高的物理页被回收,还可以对高于回收标准的活跃度设置两个或两个以上可选的值,这样,活跃度更高的物理页在回收尝试中更不容易被回收。因此,本发明对目标应用程序的目标进程进行内存回收方法第三种实施方式的流程如图5所示。
步骤S501,设置物理页活跃度的可选值,包括第一值、第二值、第三值和第四值。
设置物理页活跃度的可选值,比如可以包括第一值、第二值、第三值和第四值,其中,第一值不高于回收标准,第二值低于第三值,且高于回收标准,第三值低于第四值。或者可以说,各个可选值代表了物理页的活跃度的级数,值越高,活跃度的级数越高。
作为举例,可以通过设置标志位来评估物理页的活动程度,假设设置两个标志位,每个标志位的可选值为0和1,活跃度的值可以用(第一标志位数值,第二标志位数值)来代表,那么活跃度的可选值包括(0,0)、(0,1)、(1,0)和(1,1),并预设比较标准(0,0)低于(1,0)低于(0,1)低于(1,1),也就是说(0,0)、(1,0)、(0,1)、(1,1)逐级升高。
在实际使用中,也可以设置可选值的范围,而不具体设置各个值。
步骤S502,获取目标进程对应的目标物理页。
步骤S503,读取目标物理页的活跃度的值。
步骤S502至步骤S503分别与第一种实施方式中的步骤S301至步骤S302相同,此处不再赘述。
步骤S504,判断目标物理页的活跃度的值是否高于回收标准,若是,则执行步骤S505,若否,则执行步骤S507。
在读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,若是,则执行步骤S505,若否,则执行步骤S507。
步骤S505,按照第一幅度降低目标物理页的活跃度。
若判定目标物理页的活跃度的值高于回收标准,则可以按照第一幅度降低目标物理页的活跃度,在本发明实施例中,第一幅度可以为每次降低一级。
步骤S506,开启计时器。
可以设置有预设时长,作为反悔时长,关于预设时长的设置,请参阅第二种实施方式,本实施例中不再赘述。
当计时器记录的时长到达预设时长时,重复执行步骤S503至步骤S504。可以只重复一次,也就是说,若第一次重复执行步骤S504时,仍然判定目标物理页的活跃度的值高于回收标准,则不再执行步骤S505,而是直接退出对目标物理页的回收流程,也就是说,对活动状态的物理页只进行一次回收尝试。为了提高回收效率,回收更多的内存,优选的,对活动状态的物理页进行两次或两次以上的回收尝试,也就是说,可以对步骤S503至步骤S504重复执行两次或两次以上。
重复次数可以预设,实际场景测试结果表明,前三次回收尝试的回收效率更高,第四次及之后的回收尝试回收效率很低,因此重复次数可以设置为三次。另外,也可以根据内存占用率设置重复次数,内存占用率越高,回收次数越多。或者,在实际使用中,也可以根据其他考虑对重复次数进行设置,此处不做限定。
步骤S507,回收目标物理页。
若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
下面按照第三实施例提供的方法,以首次读取的活跃度的值的不同情况的进行举例说明,假设步骤S503至步骤S504的最大重复执行次数设置为3次:
一、假设在回收尝试的过程中,目标物理页未被访问,其活跃度的值未增加,那么:
若首次读取目标物理页的活跃度的值为第四值,那么执行步骤S505后,目标物理页的活跃度的值被设置为第三值,之后第一次重复执行步骤S503至步骤S504,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低一级,设置为第二值,之后第二次重复执行步骤S503至步骤S504,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低一级,设置为第一值,之后第三次重复执行步骤S503至步骤S504,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第四值,那么该物理页至少需要三次重复执行步骤S503至步骤S504方能被回收。
若首次读取目标物理页的活跃度的值为第三值,那么执行步骤S505后,目标物理页的活跃度的值被设置为第二值,之后第一次重复执行步骤S503至步骤S504,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低一级,设置为第一值,之后第二次重复执行步骤S503至步骤S504,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第三值,那么该物理页至少需要两次重复执行步骤S503至步骤S504方能被回收。
若首次读取目标物理页的活跃度的值为第二值,那么执行步骤S505后,目标物理页的活跃度的值被设置为第一值,之后第一次重复执行步骤S503至步骤S504,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第二值,那么该物理页至少需要一次重复执行步骤S503至步骤S504方能被回收。
若首次读取目标物理页的活跃度的值为第一值,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第一值,那么该物理页不需要重复执行步骤S503至步骤S504就能被回收。
可见,执行本发明的回收步骤之前,活跃度的值越高的物理页,其越不容易被回收,也就是说,本发明能够优先回收活跃度较低的物理页,实现对活动状态的物理页的精细化分类回收。
二、假设在回收尝试的过程中,目标物理页被访问,则其活跃度的值会增加,那么和第一种情况相比,系统需要更多次的回收尝试才能对目标物理页进行回收。在实际应用中,系统通常对物理页进行有限次数的回收尝试,若在有限次数的回收尝试后,目标物理页的活跃度的值仍然高于回收标准,则表明目标物理页的活跃度很高,对于目标进程来说是价值更高的物理页,系统不会回收目标物理页,在进程运行效果与内存资源充足之间取得更加合理的平衡。
进一步的,目标进程需要进行回收尝试的活动物理页包括目标进程在ACTIVE_ANON链表中的物理页(即活动状态的匿名页)和ACTIVE_FILE链表中对应的物理页(即活动状态的文件页)。其中,匿名页的回收方式为页交换,回收耗时长,效率低;而文件页的回收方式为页丢弃或页回写,回收耗时短,效率高。可见,对活动状态的匿名页的回收代价更高,因此,和活动状态的匿名页相比,可以降低对活动状态的文件页的回收难度,提高文件页的回收几率,更多的对文件页进行回收,以提高对活动物理页的整体回收效率。
增加对活动状态的匿名页的回收难度,可以采用多种方法,比如,可以增加匿名页的反悔时长,比如可以减少活跃度的可选值,或者也可以增加对活跃度的降低幅度。这里,我们对第三种方式进行举例说明,若第三实施例用于匿名页的回收,那么请参见6,本发明对目标应用程序的目标进程进行内存回收第四实施方式包括以下步骤:
步骤S601,设置物理页活跃度的可选值,包括第一值、第二值、第三值和第四值。
设置物理页活跃度的可选值,比如可以包括第一值、第二值、第三值和第四值,其中,第一值不高于回收标准,第二值低于第三值,且高于回收标准,第三值低于第四值。或者可以说,各个可选值代表了物理页的活跃度的级数,值越高,活跃度的级数越高。
作为举例,可以通过设置标志位来评估物理页的活动程度,假设设置两个标志位,每个标志位的可选值为0和1,活跃度的值可以用(第一标志位数值,第二标志位数值)来代表,那么活跃度的可选值包括(0,0)、(0,1)、(1,0)和(1,1),并预设比较标准(0,0)低于(1,0)低于(0,1)低于(1,1),也就是说(0,0)、(1,0)、(0,1)、(1,1)逐级升高。
步骤S602,获取目标进程对应的目标物理页。
步骤S603,读取目标物理页的活跃度的值。
步骤S602至步骤S603分别与第一实施例中的步骤S301至步骤S302相同,此处不再赘述。
步骤S604,判断目标物理页的活跃度的值是否高于回收标准,若是,则执行步骤S605,若否,则执行步骤S607。
在读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,若是,则执行步骤S605,若否,则执行步骤S607。
步骤S605,若目标物理页的类型为文件页,则按照第二幅度降低目标物理页的活跃度。
在获取目标进程对应的目标物理页之后,在降低目标物理页的活跃度之前,可以根据目标物理页的类型来设置其活跃度的降低幅度。当目标物理页为匿名页时,则按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,则按照第二幅度降低目标物理页的活跃度,并且第一幅度低于第二幅度。在第三实施例中,第一幅度为降低一级,可以作为当目标物理页为匿名页时的回收流程,此处不再赘述。本实施例中主要用于举例说明当目标物理页的类型为文件页时,对目标物理页的回收流程。由于第一幅度低于第二幅度,那么本实施例中第二幅度可以为每次降低两级。
步骤S606,开启计时器。
可以设置有预设时长,作为反悔时长,关于预设时长的设置,请参见第二实施例,本发明实施例中不再赘述。
当计时器记录的时长到达预设时长时,重复执行步骤S603至步骤S604。可以只重复一次,也就是说,若第一次重复执行步骤S603至步骤S604时,仍然判定目标物理页的活跃度的值高于回收标准,则不再执行步骤S605,而是直接退出对目标物理页的回收流程,也就是说,对活动状态的物理页只进行一次回收尝试。为了提高回收效率,回收更多的内存,优选的,对活动状态的物理页进行两次或两次以上的回收尝试,也就是说,可以对步骤S603至步骤S604重复执行两次或两次以上。
重复次数可以预设,实际场景测试结果表明,前三次回收尝试的回收效率更高,第四次及之后的回收尝试回收效率很低,因此重复次数可以设置为三次。另外,也可以根据内存占用率设置重复次数,内存占用率越高,回收次数越多。或者,在实际使用中,也可以根据其他考虑对重复次数进行设置,此处不做限定。
步骤S607,回收目标物理页。
若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
下面按照第四实施例提供的方法,以首次读取的活跃度的值的不同情况的进行举例说明,假设步骤S603至步骤S604的最大重复执行次数设置为3次:
一、假设在回收尝试的过程中,目标物理页未被访问,其活跃度的值未增加,那么:
若首次读取目标物理页的活跃度的值为第四值,那么执行步骤S605后,目标物理页的活跃度的值被设置为第二值,之后第一次重复执行步骤S603至步骤S604,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低两级,由于最低的级数为第一值,因此设置为第一值,之后第二次重复执行步骤S603至步骤S604,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第四值,那么该物理页至少需要两次重复执行步骤S603至步骤S604方能被回收。
若首次读取目标物理页的活跃度的值为第三值,那么执行步骤S605后,目标物理页的活跃度的值被设置为第一值,之后第一次重复执行步骤S603至步骤S604,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第三值,那么该物理页至少需要一次重复执行步骤S603至步骤S604方能被回收。
若首次读取目标物理页的活跃度的值为第二值,那么执行步骤S605后,目标物理页的活跃度的值被设置为第一值,之后第一次重复执行步骤S603至步骤S604,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第二值,那么该物理页至少需要一次重复执行步骤S603至步骤S604方能被回收。
若首次读取目标物理页的活跃度的值为第一值,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第一值,那么该物理页不需要重复执行步骤S603至步骤S604就能被回收。
可见,执行本发明的回收步骤之前,活跃度的值越高的物理页,其越不容易被回收,也就是说,本发明能够优先回收活跃度较低的物理页,实现对活动状态的物理页的精细化分类回收。
与第三实施方式相比,本实施方式通过增加活跃度的值的降低幅度,有利于减少步骤S603至步骤S604的重复执行次数,提高对活动状态的文件页的回收效率。
二、假设在回收尝试的过程中,目标物理页被访问,则其活跃度的值会增加,那么和第一种情况相比,系统需要更多次的回收尝试才能对目标物理页进行回收。在实际应用中,系统通常对物理页进行有限次数的回收尝试,若在有限次数的回收尝试后,目标物理页的活跃度的值仍然高于回收标准,则表明目标物理页的活跃度很高,对于目标进程来说是价值更高的物理页,系统不会回收目标物理页,在进程运行效果与内存资源充足之间取得更加合理的平衡。
通过第三实施例的方法和第四实施例的方法可以分别实现对目标进程的处于活动状态的匿名页和文件页的回收,如下表1,为按照第三实施例的方法和第四实施例的方法进行页面回收的一次实际场景测试。可以理解的是,表1中的测试数据仅为一次测试的结果,再次测试时,由于使用的终端不同、对应用程序的使用情况不同等,均会导致测试数据的变化,因此,表1的数据仅用于定性说明本发明对各应用的回收效果,而不用于定量限定本发明对各应用的回收效率。
应用名称 | 第一次回收率 | 第二次回收率 | 第三次回收率 | 第四次回收率 | 第五次回收率 | 累计进行三次回收的回收率 | 累计进行五次回收的回收率 |
豆瓣 | 2.64% | 8.27% | 26.73% | 0.46% | 0.08% | 34.56% | 35.00% |
4.62% | 33.02% | 11.55% | 1.90% | -0.97% | 43.49% | 44.10% | |
微信 | 1.79% | 12.15% | 19.32% | -0.04% | 0.32% | 30.39% | 30.60% |
今日头条 | 5.84% | 16.98% | 17.35% | -0.33% | -0.85% | 35.39% | 34.70% |
QQ浏览器 | 11.72% | 17.80% | 6.53% | 1.54% | -1.94% | 32.17% | 32.00% |
手机管家 | 4.87% | 20.91% | 17.58% | -0.62% | 0.72% | 37.99% | 38.10% |
应用中心 | 24.46% | 18.66% | 11.40% | 0.23% | -2.54% | 45.56% | 44.40% |
新浪微博 | 8.69% | 25.51% | 32.80% | -0.52% | -3.39% | 54.29% | 53.50% |
表1
分别以豆瓣、QQ、微信、今日头条、QQ浏览器、手机管家、应用中心和新浪微博等应用作为目标应用,即测试对象,以目标应用中的进程作为目标进程,对目标进程进行页面回收,以实现对目标应用的内存回收。以豆瓣为例,在测试过程中,首先对豆瓣的目标进程的匿名页执行一次步骤S503至步骤S504或者对其文件页执行一次步骤S603至步骤S604,简称为对豆瓣进行第一次回收,根据回收测试前豆瓣占用的内存大小和第一次回收后豆瓣占用的内存大小,可以计算得到对豆瓣的第一次回收率,为2.64%;之后对豆瓣的目标进程的匿名页第二次执行步骤S503至步骤S504、或者对其文件页第二次执行步骤S603至步骤S604,简称为对豆瓣进行第二次回收,根据第一次回收后豆瓣占用的内存大小和第二次回收后豆瓣占用的内存大小,可以计算得到对豆瓣的第二次回收率,为8.27%;依此类推,可以得到对豆瓣的第三次回收率为26.73%、对豆瓣的第四次回收率为0.46%、对豆瓣的第五次回收率为0.08%。
观察表1中同一应用不同次回收的回收率,可以看出,各应用在前三次的回收率均远远大于第四次和第五次的回收率,并且,累计进行三次回收的回收率(根据第三次回收后应用占用的内存大小和回收测试前应用占用的内存大小计算得到)和累计进行五次回收的回收率相差不大,说明回收次数过多,回收效率不高,且浪费资源,因此优选的是对应用进行有限次数的页面回收。
另外,现有的针对进程进行回收的方法,只对非活动状态的物理页进行回收,回收率对应于表1中的第一次回收率,通过比较表1中同一应用的第一次回收率和累计进行三次回收的回收率,可以发现,后者是前者的数倍,倍数在2倍至17倍之间,可见,和现有技术相比,本发明实现了更高的回收率,对于缓解系统内存压力具有明显效果。
综上所述,本发明提供了一种针对进程进行内存回收的方法,并且能够对活动状态的物理页进行选择性回收,极大的提高了内存回收的效率。并且,由于针对不同类型的应用程序采用不同的内存回收策略,如针对用户较为喜爱的应用程序,执行内存回收操作的次数较少,而针对用户喜爱程度较低的应用程序,则执行内存回收操作的次数较多,从而避免对用户较为喜爱的应用程序因频繁的执行进程加载的操作而影响响应速度。
可见,本发明通过设置一个高于触发阈值的预设阈值,并且实时监控系统的可使用内存情况,一旦可使用内存降低至预设阈值即对目标应用程序进行内存回收操作,避免系统的可使用内存降低至触发阈值,从而避免触发进程关闭模块强行关闭正在运行的进程而影响终端设备的稳定运行。
由于本发明的内存回收操作是针对进程执行的,也就是获取目标应用程序正在执行的目标进程,通过对目标进程的物理页进行回收实现内存回收操作。优选的,进程管理器中记录有进程优先等级,例如记录ADJ值,在对进程执行内存回收操作后,对ADJ值进行调节。由于进程关闭模块在关闭进程时,将根据每一进程的ADJ值进行选取,ADJ值越高,表示进程越不重要,ADJ值越低,表示进程越重要。因此,进程关闭模块在关闭进程时,从ADJ值较高的进程开始选择需要关闭的进程。
本实施例中,可以将已经被回收内存的进程的ADJ值降低,从而避免已经执行内存回收操作的进程被关闭。当然,还可以根据进程执行回收操作后所回收的内存量来确定ADJ值降低幅度,例如,回收的内存越多,ADJ值降低越多,回收的内存越少,ADJ值降低越少。也就是,回收内存较多的进程将不容易被进程关闭模块所关闭。
上面对本发明实施例中的终端设备控制方法进行了描述,下面对本发明实施例终端设备控制装置进行描述。
参见图7,本发明的终端设备控制装置包括:
预设阈值计算模块701,计算预设阈值,具体的,获取进程关闭模块执行进程关闭操作的触发阈值,并获取系统总内存量,根据总内存量确定内存调节值,其中,内存调节值与系统总内存量正相关,例如,系统内存总量是2G,内存调节值可以设定为100M,系统内存总量是3G,内存调节值可以设定为150M。或者,将内存调节值设定为系统内存总量的5%。确定触发阈值以及内存调节值后,计算预设阈值,其中,预设阈值为触发阈值与内存调节值之和。因此,预设阈值高于进程关闭模块执行进程关闭操作的触发阈值。
判断模块702,用于判断系统当前可使用内存是否低于预设阈值。
内存回收模块703,用于在确定系统可使用内存低于预设阈值时,获取正在运行的目标应用程序,并对目标应用程序执行内存回收操作。优选的,内存回收模块703对目标应用程序执行第一次内存回收操作后,判断第一次内存回收操作所回收的内存是否低于回收阈值,如是,对目标应用程序执行第二次内存回收操作。更优选的,对目标应用程序执行第二次内存回收操作后,判断终端设备是否进入熄屏状态,如是,对目标应用程序执行第三次内存回收操作。
这样,在系统可使用内存降低至触发阈值前,通过对目标应用程序执行至少一侧内存回收操作,回收目标应用程序所占用的内存,从而避免因系统可使用的内存降低至触发阈值而导致进程关闭模块强行关闭正在运行的进程。
内存回收模块703可以有多种实现方式,一种具体的实现方式如图8所示,本发明实施例中内存回收模块703的第一实施例包括:
获取模块801,用于获取目标应用程序对应的目标进程,并且获取目标进程对应的目标物理页。
第一读取模块802,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关。
降低模块803,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,并且,活跃度的值高于回收标准的物理页处于活动状态。
第二读取模块804,用于在降低模块降低目标物理页的活跃度之后,再次读取目标物理页的活跃度的值。
回收模块805,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
请参见图9,本发明实施例中内存回收模块703第二实施例包括:
获取模块901,用于获取目标应用程序对应的目标进程,并获取目标进程对应的目标物理页。
第一读取模块902,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关。
降低模块903,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,活跃度的值高于回收标准的物理页处于活动状态。
优选的,降低模块903包括有设置单元904以及降低单元905,其中,设置单元904用于当目标物理页的活跃度为第三值时,将目标物理页的活跃度设置为第二值;当目标物理页的活跃度为第二值时,将目标物理页的活跃度设置为第一值。降低单元905用于当目标物理页为匿名页时,按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,按照第二幅度降低目标物理页的活跃度;并且,第一幅度低于第二幅度。
第二设置模块906,用于在计时模块907开启计时器之前,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
计时模块907,用于在降低目标物理页的活跃度之后,在读取目标物理页的活跃度的值之前,开启计时器。
第二读取模块908,用于在降低模块降低目标物理页的活跃度之后,读取目标物理页的活跃度的值。
回收模块909,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
在实际使用中,也可以不采用第二设置模块,而是采用第一设置模块,第一设置模块用于在计时模块开启计时器之前,根据内存占用率设置预设时长,预设时长与内存占用率负相关。
本发明实施例还提供了一种终端设备,如图10所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端设备可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文缩写:PDA)等任意终端设备。
参考图10,终端设备包括:电源1003、存储器1002、处理器1001以及存储在存储器中并可在处理器上运行的计算机程序。其中,处理器1001执行计算机程序时实现上述各个信息处理方法实施例中的步骤,例如图1所示的步骤S101至S108等。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器中,并由处理器执行,以完成本发明。上述的一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。
本领域技术人员可以理解,图10中示出的结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,例如上述的终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(SmartMedia Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
当然,上述的方案只是本发明优选的实施方案,实际应用是还可以有更多的变化,例如,待处理信息的设置方式改变、对待处理信息的不可见方式的改变,这样的改变并不影响本发明的实施,也应该包括在本发明的保护范围内。
Claims (9)
1.一种终端设备控制方法,其特征在于,该方法包括:
判断系统可使用内存是否低于预设阈值,如是,获取正在运行的目标应用程序,并对所述目标应用程序执行内存回收操作;
其中,所述预设阈值高于进程关闭模块执行进程关闭操作的触发阈值;
对所述目标应用程序执行一次内存回收操作包括:
获取所述目标应用程序正在运行的目标进程,并获取所述目标进程对应的目标物理页;
读取所述目标物理页的活跃度的值,所述目标物理页的活跃度用于标记所述目标物理页的活动程度,所述目标物理页的活跃度的值与所述目标物理页的活动程度正相关;
若所述目标物理页的活跃度的值高于回收标准,且活跃度的值高于所述回收标准的物理页处于活动状态,则降低所述目标物理页的活跃度;
再次读取所述目标物理页的活跃度的值;
若所述目标物理页的活跃度的值不高于所述回收标准,则回收所述目标物理页。
2.根据权利要求1所述的终端设备控制方法,其特征在于,对所述目标应用程序执行内存回收操作包括:
对所述目标应用程序执行第一次内存回收操作,并判断所述第一次内存回收操作所回收的内存是否低于回收阈值,如是,对所述目标应用程序执行第二次内存回收操作。
3.根据权利要求2所述的终端设备控制方法,其特征在于,对所述目标应用程序执行内存回收操作还包括:
对所述目标应用程序执行第二次内存回收操作后,判断终端设备是否进入熄屏状态,如是,对所述目标应用程序执行第三次内存回收操作。
4.根据权利要求1至3任一项所述的终端设备控制方法,其特征在于,该方法还包括:确定系统可使用内存低于预设阈值后,获取正在运行的目标应用程序前,还执行:
获取上一次执行内存回收操作的时间,计算上一次执行内存回收操作的时间至确定系统可使用内存低于所述预设阈值之间的时间长度,确定所述时间长度大于预设的时间长度阈值。
5.根据权利要求1至3任一项所述的终端设备控制方法,其特征在于,所述判断系统可使用内存是否低于预设阈值前,还执行:
获取进程关闭模块执行进程关闭操作的触发阈值,并获取系统总内存量,根据所述总内存量确定内存调节值;
预设阈值为所述触发阈值与所述内存调节值之和。
6.根据权利要求5所述的终端设备控制方法,其特征在于,所述内存调节值与所述系统总内存量正相关。
7.一种终端设备控制装置,其特征在于,该装置包括:
判断模块,用于判断系统可使用内存是否低于预设阈值;
内存回收模块,用于确定系统可使用内存低于预设阈值时,获取正在运行的目标应用程序,并对所述目标应用程序执行内存回收操作;
其中,所述预设阈值高于进程关闭模块执行进程关闭操作的触发阈值;
所述内存回收模块包括:
获取模块,用于获取目标应用程序对应的目标进程,并且获取目标进程对应的目标物理页;
第一读取模块,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关;
降低模块,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,并且,活跃度的值高于回收标准的物理页处于活动状态;
第二读取模块,用于在降低模块降低目标物理页的活跃度之后,再次读取目标物理页的活跃度的值;
回收模块,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
8.一种终端设备,其特征在于,所述终端设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至6中任意一项所述终端设备控制方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1至6中任意一项所述终端设备控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710681459.6A CN108228342B (zh) | 2017-08-10 | 2017-08-10 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710681459.6A CN108228342B (zh) | 2017-08-10 | 2017-08-10 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108228342A CN108228342A (zh) | 2018-06-29 |
CN108228342B true CN108228342B (zh) | 2021-02-09 |
Family
ID=62654241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710681459.6A Active CN108228342B (zh) | 2017-08-10 | 2017-08-10 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228342B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727606A (zh) * | 2019-09-27 | 2020-01-24 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置以及电子设备 |
CN115905032A (zh) * | 2021-08-20 | 2023-04-04 | 深圳市江波龙电子股份有限公司 | 存储设备及其数据回收方法、控制设备及可读存储介质 |
CN116661988A (zh) * | 2022-12-29 | 2023-08-29 | 荣耀终端有限公司 | 内存的规整方法、电子设备及可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0959409B1 (en) * | 1998-05-19 | 2003-06-25 | Northrop Grumman Corporation | Dynamic memory reclamation without compiler or linker assistance |
CN102968335A (zh) * | 2012-10-25 | 2013-03-13 | 东莞宇龙通信科技有限公司 | 终端和终端内存管理方法 |
CN103150259A (zh) * | 2013-03-22 | 2013-06-12 | 华为技术有限公司 | 一种内存回收方法和装置 |
CN103324500A (zh) * | 2013-05-06 | 2013-09-25 | 广州市动景计算机科技有限公司 | 一种回收内存的方法及装置 |
CN105446814A (zh) * | 2014-09-30 | 2016-03-30 | 青岛海信移动通信技术股份有限公司 | 一种缓存回收方法和装置 |
CN105808447A (zh) * | 2016-03-29 | 2016-07-27 | 海信集团有限公司 | 一种终端设备的内存回收方法和装置 |
-
2017
- 2017-08-10 CN CN201710681459.6A patent/CN108228342B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0959409B1 (en) * | 1998-05-19 | 2003-06-25 | Northrop Grumman Corporation | Dynamic memory reclamation without compiler or linker assistance |
CN102968335A (zh) * | 2012-10-25 | 2013-03-13 | 东莞宇龙通信科技有限公司 | 终端和终端内存管理方法 |
CN103150259A (zh) * | 2013-03-22 | 2013-06-12 | 华为技术有限公司 | 一种内存回收方法和装置 |
CN103324500A (zh) * | 2013-05-06 | 2013-09-25 | 广州市动景计算机科技有限公司 | 一种回收内存的方法及装置 |
CN105446814A (zh) * | 2014-09-30 | 2016-03-30 | 青岛海信移动通信技术股份有限公司 | 一种缓存回收方法和装置 |
CN105808447A (zh) * | 2016-03-29 | 2016-07-27 | 海信集团有限公司 | 一种终端设备的内存回收方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108228342A (zh) | 2018-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228341B (zh) | 内存回收方法及装置、终端设备及计算机可读存储介质 | |
CN108228449B (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN108205498B (zh) | 内存回收方法及装置、计算机装置及计算机可读存储介质 | |
CN108205471B (zh) | 内存回收方法及装置、计算机装置及计算机可读存储介质 | |
CN108205473B (zh) | 内存处理方法及装置、计算机装置及计算机可读存储介质 | |
US10810127B2 (en) | Solid-state hard disk and data access method for use with solid-state hard disk | |
US10133679B2 (en) | Read cache management method and apparatus based on solid state drive | |
US10437519B2 (en) | Method and mobile terminal for processing write request | |
CN108228342B (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN108205474B (zh) | 内存管理方法、终端设备、计算机装置以及可读存储介质 | |
CN108205501B (zh) | 内存回收方法及装置、计算机装置及计算机可读存储介质 | |
CN111324303B (zh) | Ssd垃圾回收方法、装置、计算机设备及存储介质 | |
CN111176560B (zh) | 一种缓存管理方法、装置、计算机设备及存储介质 | |
US10303382B1 (en) | Application defined storage device | |
CN108228339B (zh) | 一种内存回收方法及装置、终端设备及计算机可读存储介质 | |
CN108776614B (zh) | 存储块的回收方法和装置 | |
US10514848B2 (en) | Data storage method for selectively storing data in a buffer preset in a memory of an electronic device or an inherent buffer in an SSD | |
CN111245732B (zh) | 一种流量控制方法、装置及设备 | |
CN110727607B (zh) | 内存回收方法、装置以及电子设备 | |
CN108287760B (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN108287761B (zh) | 内存回收方法及装置、终端设备及计算机可读存储介质 | |
CN106406753A (zh) | 一种数据存储方法及数据存储装置 | |
CN108228340B (zh) | 终端控制方法及装置、终端设备及计算机可读存储介质 | |
CN108228472B (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN110727605B (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 |