CN108228472A - 终端设备控制方法及装置、终端设备及计算机可读存储介质 - Google Patents
终端设备控制方法及装置、终端设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN108228472A CN108228472A CN201710693512.4A CN201710693512A CN108228472A CN 108228472 A CN108228472 A CN 108228472A CN 201710693512 A CN201710693512 A CN 201710693512A CN 108228472 A CN108228472 A CN 108228472A
- Authority
- CN
- China
- Prior art keywords
- physical page
- application
- liveness
- value
- application program
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种终端设备控制方法及装置、终端设备及计算机可读存储介质,该方法包括获取对目标应用程序执行内存回收操作的指令;判断目标应用程序是否为多开应用程序,如是,获取目标应用程序的第一多开标识;根据目标应用程序的第一多开标识获取目标应用程序对应的第一目标进程;对第一目标进程执行内存回收操作。该装置用于实现上述的终端设备控制方法。本发明提供的终端设备具有处理器以及存储器,处理器执行计算机程序时可以实现上述的终端设备控制方法。本发明的计算机可读存储介质上存储有用于实现上述方法计算机程序。本发明可以单独针对一个多开应用程序执行内存回收操作,而不会影响同名关联应用程序的运行。
Description
技术领域
本发明涉及电子设备的控制领域,具体地,是在一种在终端设备上实现终端设备控制方法以及实现这种方法的装置,还涉及一种实现上述方法的终端设备以及计算机可读存储介质。
背景技术
智能手机、平板电脑等终端设备成为人们日常生活中最经常使用的电子设备,人们喜欢在智能电子设备上安装各种应用程序,并且在终端设备上同时运行大量的应用程序。并且,用户也会有在同一终端设备用多个账号同时登录同一个应用程序的需求,此时一个应用程序的多个实例会同时运行,多个实例包括应用程序的源进程和应用程序的分身进程。现有技术利用***多用户的机制,在另一个用户中,启动应用的新实例,基于多用户实现所有应用组件的隔离,即不同的分身进程,以不同的用户身份执行,每个用户身份只能运行一个分身。但是这种方式需要用户首先切换用户身份,之后才能实现应用实例的切换,操作复杂。
因此,现有技术提出一种针对同一个账号的一个应用程序的分身使用,即设置应用程序的分身应用。例如,在接收为某一个应用程序创建分身应用程序的指令后,为该应用程序创建一个分身图标,这样,该应用程序存在一个主应用程序以及一个分身应用程序。当用户点击该分身应用程序的图标时,***将运行分身应用程序的进程。分身应用程序的进程独立于主应用程序的进程,具有独立的运行环境,例如活动Activity、服务Service、内容提供者Content Provider、任务Task和广播接收机Broadcast Receiver等。
为了区分主应用程序以及分身应用程序,需要在主应用程序以及分身应用程序上设置一个多开标识,例如,为主应用程序以及分身应用程序设置唯一的ID,以标识该应用程序是主应用程序还是分身应用程序。
由于每一应用程序都占用一定的内存资源,当终端设备运行大量的应用程序后,将使用大量的内存资源,而终端设备的操作***中,为了加快对磁盘进行读写操作的速度,通常会将大量的数据缓存在内存中。进程在使用内存前,需要提出申请并开始占用内存,当使用完内存后再及时回收内存。由于用户在使用终端应用的过程中,经常会频繁更换应用,为了减少用户的等待时长,操作***通常会为转入后台的应用进程保留其占用的内存。但是,当后台应用过多,内存被大量占用而得不到回收时,会因为内存分配不足导致操作***运行出现异常。
为了避免因内存分配不足导致的***异常,操作***引入了对内存的回收机制。例如,当内存不足时,***会关闭一些后台进程来回收其占用的内存。但是,当用户需要使用这些进程对应的应用程序时,这些进程需要完全的进行重新加载,耗时长,降低用户体验。因此,现有技术提出在不关闭进程的情况下进行内存回收的方法。近期最少使用链表LRU,将物理页按照近期的使用情况进行排列,当内存不足时,***会优先对其中的INACTIVE_ANON和INACTIVE_FILE这两个链表中的物理页进行回收。ANON代表匿名映射,没有后备存储器,FILE代表文件映射,INACTIVE代表处于非活动状态。当进程需要使用回收的物理页上的内容时,只要从磁盘中加载相应内容即可,减少耗时。但是,前台运行的应用进程或者后台运行的优先级高的应用进程,其占用的物理页也可能处于INACTIVE_ANON和INACTIVE_FILE这两个链表中,对这两个链表中的物理页进行回收可能会影响这两类应用的正常运行,降低用户体验。
为了保证前台应用进程和后台运行的优先级高的应用进程的正常运行,现有技术提出针对进程进行内存回收的方法,首先获取目标进程的物理页,之后查找未被目标进程使用的目标物理页并回收目标物理页。但是在现有的对进程进行内存回收的方法中,其回收的目标物理页仅仅针对未被目标进程使用的目标物理页,目标物理页主要是目标进程在INACTIVE_ANON和INACTIVE_FILE这两个链表中的物理页,也就是非活动状态的物理页,这种方法的内存回收效率很低。
而对应用程序进行内存回收操作时,操作***通常根据用户名UID以及应用程序的包名确定需要执行内存回收的应用程序,但是对于多开应用程序,即主应用程序以及分身应用程序,具有相同的UID以及包名,如果用户需要对某一应用程序执行内存回收操作,往往是同时对主应用程序以及分身应用程序执行内存回收操作。
然而,诸如用户仅仅希望对其中一个,如分身应用程序执行内存回收操作,则同时会对主应用程序也执行了内存回收操作。如果此时主应用程序在前台运行,则内存回收操作过程中将影响应用程序的响应速度,影响用户体验。
发明内容
本发明的第一目的是提供一种可以单独对主应用程序或者分身应用程序执行内存回收的终端设备控制方法。
本发明的第二目的是提供一种避免同时对主应用程序以及分身应用程序执行内存回收的终端设备控制装置。
本发明的第三目的是提供一种能够实现上述终端设备控制方法的终端设备。
本发明的第四目的是提供一种被处理器读取并执行时能够实现上述终端设备控制方法的计算机可读存储介质。
为了实现上述的第一目的,本发明提供的终端设备控制方法包括获取对目标应用程序执行内存回收操作的指令;判断目标应用程序是否为多开应用程序,如是,获取目标应用程序的第一多开标识;根据目标应用程序的第一多开标识获取目标应用程序对应的第一目标进程;对第一目标进程执行内存回收操作。
由上述方案可见,在确定目标应用程序是多开应用程序后,通过获取第一多开标识来区分主应用程序以及分身应用程序,从而获取对应的应用程序的进程,并且对所获取的进程执行内存回收操作,这样可以避免同时对主要程序以及分身应用程序执行内存回收操作。
一个优选的方案是,获取对目标应用程序执行内存回收操作的指令包括:获取目标应用程序的同名关联应用程序置于前台运行的指令;其中,目标应用程序与同名关联应用程序具有相同的应用程序名;或者,获取目标应用程序置于后台运行的指令。
由此可见,当目标应用程序的同名关联应用程序置于前台运行时,对目标应用程序执行内存回收操作,也就是对置于后台运行的目标应用程序执行内存回收操作,可以尽快的对内存进行回收。
进一步的方案是,确认目标应用程序为多开应用程序后,该方法还包括:获取目标应用程序的同名关联应用程序;判断同名关联应用程序是否置于后台运行,如是,则获取置于后台运行的同名关联应用程序的第二多开标识,根据第二多开标识获取同名关联应用程序对应的第二目标进程;对第二目标进程执行内存回收操作。
可见,当主应用程序或者分身应用程序中的一个被执行内存回收操作时,其他的置于后台运行的同名关联应用程序也执行内存回收操作,从而可以尽快的回收内存。
优选的,对第一目标进程执行内存回收操作包括:根据第一多开标识判断目标应用程序为主应用程序或者分身应用程序;如确定目标应用程序为主应用程序,则对第一目标进程执行不多于第一预设次数的内存回收操作;如确定目标应用程序为分身应用程序,则对第一目标进程执行不少于第二预设次数的内存回收操作;其中,第一预设次数小于或等于第二预设次数。
由此可见,对主应用程序与分身应用程序采用不同的内存回收策略,即对主应用程序采用较少次数的内存回收操作,而对分身应用程序采用较多次数的内存回收操作,从而实现主应用程序与分身应用程序在内存回收操作上的差异化处理。
进一步的方案是,对目标应用程序执行一次内存回收操作包括:获取目标应用程序正在运行的目标进程,并获取目标进程对应的目标物理页;读取目标物理页的活跃度的值,目标物理页的活跃度用于标识目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关;若目标物理页的活跃度的值高于回收标准,且活跃度的值高于回收标准的物理页处于活动状态,则降低目标物理页的活跃度;再次读取目标物理页的活跃度的值;若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
由上述方案可见,在获取目标进程对应的目标物理页之后,若目标物理页的活跃度的值高于回收标准,可以降低目标物理页的活跃度,并在目标物理页的活跃度不高于回收标准时,对目标物理页进行回收。这样,即使目标物理页为活动状态的物理页,本发明也有机会对目标物理页进行回收,相比于现有技术,本发明大大扩展了内存回收的对象,提高了内存回收效率。
进一步的,在降低目标物理页的活跃度之后,在读取目标物理页的活跃度的值之前,开启计时器;当计时器记录的时长达到预设时长时,触发读取目标物理页的活跃度的值的步骤。
进一步的,开启计时器之前,根据内存占用率设置预设时长,预设时长与内存占用率负相关;或者,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
进一步的,活跃度的可选值至少包括第一值、第二值和第三值,第一值不高于回收标准,第二值低于第三值,且高于回收标准。
进一步的,降低目标物理页的活跃度包括:当目标物理页的活跃度为第三值时,将目标物理页的活跃度设置为第二值;当目标物理页的活跃度为第二值时,将目标物理页的活跃度设置为第一值。
进一步的,降低目标物理页的活跃度包括:当目标物理页为匿名页时,按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,按照第二幅度降低目标物理页的活跃度;第一幅度低于第二幅度。
为实现上述的第二目的,本发明提供的终端设备控制装置包括第一获取模块,用于获取对目标应用程序执行内存回收操作的指令;判断模块,用于判断目标应用程序是否为多开应用程序;第二获取模块,用于确定目标应用程序为多开应用程序时,获取目标应用程序的第一多开标识;第三获取模块,用于根据目标应用程序的第一多开标识获取目标应用程序对应的第一目标进程;内存回收模块,用于对第一目标进程执行内存回收操作。
进一步的,内存回收模块包括:第四获取模块,用于获取目标进程对应的目标物理页;第一读取模块,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标识目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关;降低模块,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,活跃度的值高于回收标准的物理页处于活动状态;第二读取模块,用于在降低模块降低目标物理页的活跃度之后,再次读取目标物理页的活跃度的值;回收模块,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
进一步的,内存回收模块还包括第一设置模块,用于在计时模块开启计时器之前,根据内存占用率设置预设时长,预设时长与内存占用率负相关;或者,第二设置模块,用于在计时模块开启计时器之前,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
进一步的,活跃度的可选值至少包括第一值、第二值和第三值,第一值不高于回收标准,第二值低于第三值,且高于回收标准。
进一步的,降低模块包括:设置单元,用于当目标物理页的活跃度为第三值时,将目标物理页的活跃度设置为第二值;当目标物理页的活跃度为第二值时,将目标物理页的活跃度设置为第一值。
进一步的,降低模块包括:降低单元,用于当目标物理页为匿名页时,按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,按照第二幅度降低目标物理页的活跃度;第一幅度低于第二幅度。
为实现上述的第三目的,本发明提供的终端设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现上述终端设备控制方法的各个步骤。
为实现上述的第四目的,本发明提供的计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述终端设备控制方法的各个步骤。
附图说明
图1是本发明终端设备控制方法实施例的流程图。
图2是本发明终端设备控制方法实施例中对第一目标进程执行内存回收操作的流程图。
图3是本发明终端设备控制方法实施例中对主应用程序与分身应用程序执行内存回收操作的流程图。
图4是本发明终端设备控制方法实施例中的对目标进程执行一次内存回收操作的第一种方式的流程图。
图5是本发明终端设备控制方法实施例中的对目标进程执行一次内存回收操作的第二种方式的流程图。
图6是本发明终端设备控制方法实施例中的对目标进程执行一次内存回收操作的第三种方式的流程图。
图7是本发明终端设备控制方法实施例中的对目标进程执行一次内存回收操作的第四种方式的流程图。
图8是本发明终端设备控制装置实施例的结构框图。
图9是本发明终端设备控制装置实施例的内存回收模块一种方式的结构框图。
图10是本发明终端设备控制装置实施例的内存回收模块另一种方式的结构框图。
图11是本发明终端设备实施例的结构框图。
以下结合附图及实施例对本发明作进一步说明。
具体实施方式
本发明终端设备控制方法是应用在诸如智能手机或者平板电脑等终端设备上,用于实现对多开应用程序中的一个应用程序执行内存回收的操作。本发发明的终端设备控制装置运行在终端设备上,并且用于实现上述的终端设备控制方法。
由于用户在使用终端设备时,往往需要同时使用两个相同的应用程序,例如,用户使用第一个账号登录微信,但是,在同一用户名下,又希望使用第二个账号登录微信,为了方便用户实现这种操作,现有的移动终端提供对应用程序进行分身的操作,即创建一个分身应用程序,分身应用程序与主应用程序相互独立,并且相互执行各自的进程。
应用程序的分身操作通常是双开或多开某应用程序,以实现在操作***下,一个应用程序能够同时打开两个或多个,并且打开的两个或多个进程同时运行。终端设备可以接收为某一应用程序创建分身应用程序的指令。需要说明的是,以上对应用程序的分身操作的描述只是对分身应用常见的一种解释,在实际应用中,分身应用不限于这一种描述对应的情况。
因此,本文的多开应用程序是已经被执行分身操作的应用程序或者由分身操作而形成的应用程序,也就是多开应用程序存在至少一个的同名的应用程序,即多开应用程序与同名的应用程序具有相同的应用程序名。因此,操作***框架下,多开应用程序与同名的应用程序是具有相同的包名,单单通过应用程序的包名是无法区分主应用程序以及分身应用程序。
多开应用程序与同名的应用程序中,其中一个是主应用程序,即最早被执行分身操作的应用程序,其他的应用程序是分身应用程序,即通过分身操作所形成的应用程序,可以理解,分身应用程序是由主应用程序直接或者间接分身获得的应用程序。
为了便于操作***区分不同的多开应用程序,需要为每一个多开应用程序设置唯一的多开标识,例如,为每一个多开应用程序设置标志位,使用“00”标识主应用程序,使用“01”或者“10”等标识分身应用程序,为多开应用程序所设置的标志位即为多开标识,***可以通过多开标识确定该多开应用程序是主应用程序还是分身应用程序。
由于多开应用程序与同名的应用程序之间具有相同的包名,因此,***可以根据应用程序的包名确定某一应用程序是否存在其他同名的应用程序,例如,某一多开应用程序是主应用程序,该主应用程序被分身操作形成两个分身应用程序,则两个分身应用程序是该主应用程序的同名关联应用程序,可以理解,同名关联应用程序是与目标应用程序具有相同包名、但多开标识不相同的应用程序。
当然,由于现有的操作***支持多用户操作,因此,***识别某一应用程序时,除了使用应用程序的包名外,还使用用户标识,即UID,操作***通过UID以及应用程序的包名来识别应用程序。对于多开应用程序,操作***需要使用UID、应用程序包名以及多开标识来识别应用程序。
下面结合图1介绍本实施例的终端设备控制方法。
步骤S101,获取对目标应用程序执行内存回收操作的指令。
当操作***当前可使用的内存量较小时,如可使用内存低于某一阈值,则操作***将发出对某一个或者多个应用程序执行内存回收操作的指令,以回收内存,避免操作***内存过低而影响终端设备的运行速度。或者,用户主动发出对某一应用程序执行内存回收操作的指令,如在任务管理器内选择目标应用程序,并且发出了预设的操作手势、声控指令等。
当然,如果目标应用程序进入后台运行,或者目标应用程序的同名关联应用程序进入前台运行,又或者目标应用程序进入后台运行,操作***都可以对目标应用程序发出内存回收的指令。
例如,当目标应用程序在前台运行时,接收到用户发出的转入后台运行的指令,如用户点击返回桌面的指令,或者点击打开其他的应用程序并且让其他应用程序转入前台运行,此时,目标应用程序即置于后台运行。在目标应用程序置于后台运行后,操作***可以对目标应用程序发出执行内存回收操作的指令。
另一种情况是,当目标应用程序的一个同名关联应用程序置于前台运行时,操作***也可以向目标应用程序发出执行内存回收操作的指令。例如,当某一应用程序被置于前台运行,操作***可以根据该应用程序的UID以及包名确定该应用程序是否为多开应用程序,例如查找是否存在与该应用程序具有相同UID以及包名的应用程序正在运行。如果查找到该应用程序存在同名关联应用程序,则向同名关联应用程序发出执行内存回收的操作指令。如果目标应用程序是该置于前台运行的应用程序的同名关联应用程序,在操作***将发出对目标应用程序执行内存回收操作的指令。
步骤S102,判断目标应用程序是否为多开应用程序,如是,转入步骤S103,否则,转入步骤S106。
在确定接收到对目标应用程序执行内存回收操作指令后,则需要判断目标应用程序是否为多开应用程序。由于多开应用程序是具有同名相关应用程序,因此操作***只需要通过查询是否存在与目标应用程序具有相同的UID以及相同的包名的应用程序,即可以确定目标应用程序是否为多开应用程序。
例如,一种情况是,如果目标应用程序是分身应用程序,则该应用程序具有多开标识,操作***通过获取该多开标识即可以判断目标应用程序是否为多开应用程序。另一种情况是,如果目标应用程序是主应用程序,则多开标识是“00”,但***无法确定目标应用程序是否存在同名关联应用程序,因此,需要通过查询是否存在与目标应用程序具有相同UID以及包名的应用程序,以确定目标应用程序是否为多开应用程序。
步骤S103,获取目标应用程序的第一多开标识。
在步骤S102中,如果确定目标应用程序是多开应用程序,则可以获取目标应用程序的多开标识。由于每一个多开应用程序均具有唯一的多开标识,因此操作***可以通过获取目标应用程序的属性信息时获取目标应用程序的第一多开标识。
例如,在应用程序的属性中设置多开标识的标志位,通过读取应用程序的属性信息,获取多开标识的标志位的值,即可以获取目标应用程序的第一多开标识。
步骤S104,根据目标应用程序的第一多开标识获取目标应用程序的第一目标进程。
由于每一多开应用程序都创建自己的进程,并且,在应用程序的进程列表中都记录该应用程序当前使用的进程。另外,每一进程都有自己唯一的进程识别号PID,且当目标应用程序具有第一多开标识时,在进程的属性信息中需要记录目标应用程序的第一多开标识。
步骤S104中可以根据进程识别号PID来查找目标应用程序的第一目标进程。例如,通过进程识别号PID查找到进程后,判断所查找到的进程属性信息中是否记录有目标进程的第一多开标识,如果记录有目标应用程序的第一多开标识,表示所获取的进程是目标应用程序的第一目标进程,如果所获取的进程的属性信息中不包含目标应用程序的第一多开标识,则表示所获取的进程不是目标应用程序的第一目标进程。
当然,可以遍历所有正在运行的进程,获取正在执行的进程的属性信息,并且获取属性信息中的多开标识,从而查找出与目标应用程序具有相同UID、包名以及多开标识的进程,确定这些进程就是目标应用程序的第一目标进程。
步骤S105,对第一目标进程执行内存回收操作。
在获取目标应用程序的第一目标进程后,对所获取的第一目标进程执行内存回收操作。对第一目标进程执行内存回收操作的方法有很多种,常见的内存回收方法是获取第一目标进程的物理页,并且对第一目标进程的非活跃物理页进行回收。当然,如果仅仅对非活跃物理页进行回收,回收效率很低,因此,本发明提出了一种对活跃物理页进行回收的方法,该方法将在下文详细论述。
步骤S106,获取目标应用程序的目标进程并回收内存。
如果步骤S102中,确定目标应用程序不是多开应用程序,也就是目标应用程序不存在同名关联应用程序,在只需要对目标应用程序执行内存回收操作即可。具体的,获取目标应用程序正在运行的目标进程,如通过目标应用程序的进程列表获取正在运行的目标进程。
在获取目标进程后,对目标进程执行内存回收操作,例如获取目标进程的物理页后,回收目标进程的非活跃物理页,或者回收目标进程可回收的活跃物理页。对目标进程的活跃物理页进行回收的方法将在下文详细论述。
可见,本发明通过对多开应用程序进行标识,可以单独对一个多开应用程序进行内存回收,而不是针对全部的具有相同包名的应用程序都执行内存回收操作。并且,应用本发明的方法,如果具有相同包名的一组应用程序中,其中一个应用程序转入前台运行,如主应用程序转入前台运行,则可以对置于后台运行的同名关联应用程序执行内存回收操作。或者,当目标应用程序进入后台运行后,可以马上对该应用程序执行内存回收操作。
当然,如果获取对目标应用程序执行内存回收操作的指令后,则也可以对其他的也在后台运行的同名关联应用程序执行内存回收操作,具体的流程如图2所示。
步骤S201,获取目标应用程序的同名关联应用程序。
当获取对目标应用程序执行内存会后操作的指令后,可以根据目标应用程序的包名以及多开标识获取目标应用程序的同名关联应用程序。例如,遍历正在运行的所有目标应用程序,查找是否存在与目标应用程序具有相同UID以及相同包名的应用程序,所查找到的应用程序即为目标应用程序的同名关联应用程序。
步骤S202,判断同名关联应用程序是否置于后台运行,如是,转入步骤S203。
在查找到同名关联应用程序后,还需要判断所获取的同名关联应用程序是否置于后台运行,本实施例中,仅针对置于后台运行的同名关联应用程序执行内存回收操作。对于正在前台运行的同名应用程序则不执行内存回收操作,因为执行内存回收操作过程中,将影响前台运行的应用程序的响应速度。因此,如果步骤S202中,判断结果为否,则结束流程,不会对目标应用程序执行内存回收操作。
步骤S203,获取同名关联应用程序的第二目标进程。
在步骤S202中,如果确定同名关联应用程序正在后台运行,则对同名关联应用程序执行内存回收操作,首先,获取同名关联应用程序的目标进程,即第二目标进程。例如,通过获取同名关联应用程序的进程组的列表,并且通过同名关联应用程序的第二多开标识来获取第二目标进程。
步骤S204,对第二目标进程执行内存回收操作。
对第二目标进程执行内存回收操作的方法与对第一目标进程执行内存回收操作的方法相同,可以获取第二目标进程对应的物理页,并且对非活跃物理页进行回收,也可以对可回收的活跃物理页进行回收,下文将详细介绍对第一目标进程以及第二目标进程执行一次内存回收操作的具体流程。
在实际使用过程中,由于用户使用主应用程序的频率要比使用分身应用程序的概率明显偏多,因此,本发明对分身应用程序执行内存回收操作时,内存回收的力度较大,而对主应用程序的内存回收力度较小。由于内存回收的力度较小可以减小对应用程序热启动的效率,也就是应用程序从后台转入前台运行时响应速度较快。
基于这样的想法,在对目标应用程序执行内存回收时,需要判断目标应用程序是主应用程序还是分身应用程序,并且针对不同的应用程序采用不同的回收方式。参见图3,本发明对目标应用程序执行内存回收操作的具体步骤包括:
步骤S301,获取目标应用程序的第一多开标识。
由于目标应用程序的属性信息中包含有目标应用程序的UID、包名以及多开标识,因此可以通过获取目标应用程序的属性信息获取目标应用程序的第一多开标识的信息。
步骤S302,判断目标应用程序是否为主应用程序,如是,转入步骤S303,否则,转入步骤S304。
获取目标应用程序的第一多开标识后,根据第一多开标识即可以判断目标应用程序是主应用程序还是分身应用程序。例如,主应用程序的多开标识为“00”,分身应用程序的多开标识为“01”或者“10”等,也就是说,只要目标应用程序的多开标识不是“00”,即可以确定目标应用程序是分身应用程序。
步骤S303,对第一目标进程执行不多于第一预设次数的内存回收操作。
在步骤S302中,如果确定目标应用程序是主应用程序,则应该限制对目标应用程序的第一目标进程所执行的内存回收操作次数,从而限制内存回收的力度,避免主应用程序转入前台运行时速度缓慢的情况发生。
本实施例中,第一预设次数可以是一次或者两次,在特殊情况下,第一预设次数可以是零次,也就是不对主应用程序执行内存回收操作。当然,可以根据不同的具体应用程序确定第一预设次数,例如,对于用户经常使用的应用程序,如微信、QQ等应用程序,第一预设次数可以是一次,甚至是零次。而对于用户使用较少的应用程序,如视频播放软件等,第一预设次数可以较大,如两次或者三次。并且,第一预设次数可以是***默认设置的次数,也可以是用户自行设定的次数。
如果对第一目标进程执行两次以上的内存回收操作,可以是连续执行多次,即在上一次内存回收操作执行完毕后,马上执行第二次内存回收操作。或者,多次内存回收操作之间存在间隔时间,如上一次内存回收操作执行完毕后,可以经过一分钟或者两分钟后再执行下一次的内存回收操作。对第一目标进程执行一次内存回收操作的具体流程将在下文详细说明。
步骤S304,对第一目标进程执行不少于第二预设次数的内存回收操作。
在步骤S302中,如果确定目标应用程序是分身应用程序,则可以对目标应用程序的第一目标进程所执行较多次数的内存回收操作,从而加大内存回收的力度,从而回收更多的内存。
本实施例中,第二预设次数是大于第一预设次数的次数,例如,第一预设次数是一次,则第二预设次数是两次或者三次,当然,在特殊情况下,第一预设次数与第二预设次数可以是相等的。当然,可以根据不同的具体应用程序确定第二预设次数,例如,对于用户经常使用的应用程序,如微信、QQ等应用程序,第二预设次数可以是两次或者三次。而对于用户使用较少的应用程序,如视频播放软件等,第二预设次数可以较大,如三次以上。并且,第二预设次数可以是***默认设置的次数,也可以是用户自行设定的次数。
需要说明的是,第一预设次数小于或者等于第二预设次数是相对于同一应用程序而言,即同一应用程序对应的第一预设次数小于或者等于第二预设次数。当然,多次内存回收操作可以是连续执行,也可以是间隔执行,本文并不对此进行限制。
这样,通过对主应用程序以及分身应用程序采用不同的内存回收策略,可以更加有效的回收内存。另外,针对特殊的应用程序,也可以采用不同的内存回收策略。例如,针对悬浮窗口或者通知窗口的进程,也应该采用较少次数的内存回收操作方式进行内存回收,由于悬浮窗口以及通知窗口是经常显示的窗口,使用频率较高,因此应该避免频繁对悬浮窗口或者通知窗口执行内存回收操作。因此,如果确定需要执行内存回收的进程是悬浮窗口或者通知窗口的进程,则应该限制内存回收的操作次数。
由于用户在使用应用程序的过程中,经常会频繁更换所使用的应用程序,例如利用视频播放软件观看视频的过程中,可能需要频繁的将聊天应用切换到前台,为了减少用户的等待时长,操作***通常会为转入后台的应用进程保留其占用的内存。但是,当后台运行的应用程序过多,终端设备的内存被大量占用而得不到释放时,会因为内存分配不足导致操作***运行出现异常。
本发明对目标应用程序进行的内存回收操作首先是获取目标应用程序当前正在运行的目标进程,如获取目标应用程序的进程列表,从而确定目标应用程序当前正在运行的目标进程,然后分别对每一目标进程执行一次内存回收操作。执行内存回收操作主要是对物理页进行回收,而判断物理页存储数据的价值高低可以有很多角度,现有技术通常以物理页的活跃程度(或称活跃度)高低来评价物理页存储数据的价值高低,物理页的活跃度越高,***通常认为该物理页存储数据的价值越高。为了比较物理页的活跃度,现有技术引入近期最少使用链表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链表中的物理页进行选择性回收,优选的,便是回收其中价值较低的物理页,或者说,活跃度较低的物理页。因此,本实施例对第一目标进程执行一次内存回收操作,采用如下的方法执行。参见图4,针对第一目标进程内存回收的第一种方式包括以下步骤:
步骤S401,获取第一目标进程对应的目标物理页。
获取第一进程对应的物理页的方式可以根据进程识别号PID,找到进程的虚拟内存空间VMA,遍历VMA可以找到进程对应的物理页,还可以通过其他方式查找进程对应的物理页,此处不做具体限定。目标物理页可以为第一目标进程对应的全部物理页,也可以为第一目标进程对应的部分物理页。对第一目标进程的回收可以通过串行方式进行,也就是说每次回收只选择一个物理页作为目标物理页,执行本发明的回收流程,或者也可以通过并行方式进行,也就是说同时选择多个物理页作为目标物理页,对多个物理页同时执行本发明的回收流程。
步骤S402,读取目标物理页的活跃度的值。
获取第一目标进程对应的目标物理页之后,可以读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关,也就是说,物理页的活动程度越高,则其活跃度的值越大。并且,物理页的活跃度的可选值应不少于两个。
需要说明的是,活跃度的值可以为数值,此时可以按照数值大小确定活跃度的值的大小,但是,活跃度的值不应仅限为数值,只要根据预设的比较标准能够判定不同值的高低即可。
步骤S403,若目标物理页的活跃度的值高于回收标准,则降低目标物理页的活跃度,活跃度的值高于回收标准的物理页处于活动状态。
读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,回收标准可以视为是活动状态的物理页的活跃度和非活动状态的物理页的活跃度之间边界值。若判定目标物理页的活跃度的值高于回收标准,则可以降低目标物理页的活跃度,若判定目标物理页的活跃度的值不高于回收标准,则可以执行其他操作,比如回收目标物理页。
步骤S404,再次读取目标物理页的活跃度的值。
在步骤S403之后,可以读取目标物理页的活跃度的值。若在步骤S404之前,在步骤S403中所读取的目标物理页被访问,则该目标物理页的活跃度的值会增加。如果在步骤S404之前,在步骤S403中所读取的目标物理页没有被访问,则目标物理页的活跃度的值将维持步骤S403操作后,即被降低活跃度之后的值。
步骤S405,若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
再次读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。若目标物理页的活跃度的值不高于回收标准时,表明目标物理页处于非活动状态,现有技术有很多对非活动状态的物理页进行回收的方法,因此本实施例不再赘述对非活动状态的物理页的回收方法。
第一种内存回收方式中,如果步骤S403和步骤S404之间的时间间隔极短,极限情况下,可以理解成步骤S403降低目标物理页的活跃度之后,直接执行步骤S404读取目标物理页的活跃度的值,若活跃度的可选值只有两个,这样,几乎所有第一目标进程对应的处于活动状态的物理页均被回收,相当于***自动关闭第一目标进程,增加用户等待时长。因此,需要在第一实施例中增加反悔机制,比如在步骤S403和步骤S404之间设定适当的时间间隔,作为反悔时长,在设定的时间间隔内若目标物理页被访问,则其活跃度的值升高,降低被回收的可能性,有利于防止活跃度较高的物理页被回收。基于这种思路,本发明对第一目标进程的内存回收方法第二种方式的流程图如图5所示。
步骤S501,获取第一目标进程对应的目标物理页。
步骤S502,根据第一目标进程的优先级设置预设时长,预设时长与第一目标进程的优先级正相关。
反悔时长也可以称作预设时长,可以是***默认的固定时长,优选的,在确定针对第一目标进程进行回收之后,可以读取第一目标进程优先级,并根据第一目标进程的优先级设置预设时长,以使得预设时长与第一目标进程的优先级正相关,也就是说,优先级越高的进程,为其设置的预设时长越长。
或者,也可以根据内存占用率设置预设时长,预设时长与内存占用率负相关,也就是说,内存占用率越高,则预设时长越短,回收效率越高,以尽快回收更多内存。
步骤S503,读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关。
步骤S504,判断目标物理页的活跃度的值是否高于回收标准,若是,则执行步骤S505,若否,则执行步骤S507。
在读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,若是,则执行步骤S505,若否,则执行步骤S507。
步骤S505,降低目标物理页的活跃度。
若判定目标物理页的活跃度的值高于回收标准,则可以降低目标物理页的活跃度。
步骤S506,开启计时器。
降低目标物理页的活跃度之后,可以开启计时器,记录时长。当计时器记录的时长达到预设时长时,重复执行步骤S503至步骤S504可以只重复一次,也就是说,若第一次重复执行步骤S504时,仍然判定目标物理页的活跃度的值高于回收标准,则不再执行步骤S505,而是直接退出对目标物理页的回收流程,也就是说,对活动状态的物理页只进行一次回收尝试。为了提高回收效率,回收更多的内存,优选的,对活动状态的物理页进行两次或两次以上的回收尝试,也就是说,可以对步骤S503至步骤S504重复执行两次或两次以上。
重复次数可以预设为某个有限数值,实际场景测试结果表明,前三次回收尝试的回收效率更高,第四次及之后的回收尝试回收效率很低,因此重复次数可以设置为三次。另外,也可以根据内存占用率设置重复次数,内存占用率越高,回收次数越多。或者,在实际使用中,也可以根据其他考虑对重复次数进行设置,本实施例对此不做限定。
需要说明的是,步骤S502在本发明实施例中的执行顺序并不限于上述描述的顺序,由于预设时长用于步骤S506,因此,只要在步骤S506之前执行即可,具体时序不做限定。
步骤S507,回收目标物理页。
若步骤S504判定目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
本发明所设置的反悔机制,除了如第二种实施方法中,通过设定适当的时间间隔,作为反悔时长,以尽量防止活跃度较高的物理页被回收,还可以对高于回收标准的活跃度设置两个或两个以上可选的值,这样,活跃度更高的物理页在回收尝试中更不容易被回收。因此,本发明对第一目标进程进行内存回收方法第三种实施方式的流程如图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分别与第一种实施方式中的步骤S401至步骤S402相同,此处不再赘述。
步骤S604,判断目标物理页的活跃度的值是否高于回收标准,若是,则执行步骤S605,若否,则执行步骤S607。
在读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,若是,则执行步骤S605,若否,则执行步骤S607。
步骤S605,按照第一幅度降低目标物理页的活跃度。
若判定目标物理页的活跃度的值高于回收标准,则可以按照第一幅度降低目标物理页的活跃度,在本发明实施例中,第一幅度可以为每次降低一级。
步骤S606,开启计时器。
可以设置有预设时长,作为反悔时长,关于预设时长的设置,请参阅第二种实施方式,本实施例中不再赘述。
当计时器记录的时长达到预设时长时,重复执行步骤S603至步骤S604。可以只重复一次,也就是说,若第一次重复执行步骤S604时,仍然判定目标物理页的活跃度的值高于回收标准,则不再执行步骤S605,而是直接退出对目标物理页的回收流程,也就是说,对活动状态的物理页只进行一次回收尝试。为了提高回收效率,回收更多的内存,优选的,对活动状态的物理页进行两次或两次以上的回收尝试,也就是说,可以对步骤S603至步骤S604重复执行两次或两次以上。
重复次数可以预设,实际场景测试结果表明,前三次回收尝试的回收效率更高,第四次及之后的回收尝试回收效率很低,因此重复次数可以设置为三次。另外,也可以根据内存占用率设置重复次数,内存占用率越高,回收次数越多。或者,在实际使用中,也可以根据其他考虑对重复次数进行设置,此处不做限定。
步骤S607,回收目标物理页。
若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
下面按照第三实施例提供的方法,以首次读取的活跃度的值的不同情况的进行举例说明,假设步骤S603至步骤S604的最大重复执行次数设置为3次:
一、假设在回收尝试的过程中,目标物理页未被访问,其活跃度的值未增加,那么:
若首次读取目标物理页的活跃度的值为第四值,那么执行步骤S605后,目标物理页的活跃度的值被设置为第三值,之后第一次重复执行步骤S603至步骤S604,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低一级,设置为第二值,之后第二次重复执行步骤S603至步骤S604,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低一级,设置为第一值,之后第三次重复执行步骤S603至步骤S604,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第四值,那么该物理页至少需要三次重复执行步骤S603至步骤S604方能被回收。
若首次读取目标物理页的活跃度的值为第三值,那么执行步骤S605后,目标物理页的活跃度的值被设置为第二值,之后第一次重复执行步骤S603至步骤S604,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低一级,设置为第一值,之后第二次重复执行步骤S603至步骤S604,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第三值,那么该物理页至少需要两次重复执行步骤S603至步骤S604方能被回收。
若首次读取目标物理页的活跃度的值为第二值,那么执行步骤S605后,目标物理页的活跃度的值被设置为第一值,之后第一次重复执行步骤S603至步骤S604,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第二值,那么该物理页至少需要一次重复执行步骤S603至步骤S604方能被回收。
若首次读取目标物理页的活跃度的值为第一值,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第一值,那么该物理页不需要重复执行步骤S603至步骤S604就能被回收。
可见,执行本发明的回收步骤之前,活跃度的值越高的物理页,其越不容易被回收,也就是说,本发明能够优先回收活跃度较低的物理页,实现对活动状态的物理页的精细化分类回收。
二、假设在回收尝试的过程中,目标物理页被访问,则其活跃度的值会增加,那么和第一种情况相比,***需要更多次的回收尝试才能对目标物理页进行回收。在实际应用中,***通常对物理页进行有限次数的回收尝试,若在有限次数的回收尝试后,目标物理页的活跃度的值仍然高于回收标准,则表明目标物理页的活跃度很高,对于目标进程来说是价值更高的物理页,***不会回收目标物理页,在进程运行效果与内存资源充足之间取得更加合理的平衡。
进一步的,目标进程需要进行回收尝试的活动物理页包括目标进程在ACTIVE_ANON链表中的物理页(即活动状态的匿名页)和ACTIVE_FILE链表中对应的物理页(即活动状态的文件页)。其中,匿名页的回收方式为页交换,回收耗时长,效率低;而文件页的回收方式为页丢弃或页回写,回收耗时短,效率高。可见,对活动状态的匿名页的回收代价更高,因此,和活动状态的匿名页相比,可以降低对活动状态的文件页的回收难度,提高文件页的回收几率,更多的对文件页进行回收,以提高对活动物理页的整体回收效率。
增加对活动状态的匿名页的回收难度,可以采用多种方法,比如,可以增加匿名页的反悔时长,比如可以减少活跃度的可选值,或者也可以增加对活跃度的降低幅度。这里,我们对第三种方式进行举例说明,若第三实施例用于匿名页的回收,那么请参见7,本发明对第一目标进程进行内存回收第四实施方式包括以下步骤:
步骤S701,设置物理页活跃度的可选值,包括第一值、第二值、第三值和第四值。
设置物理页活跃度的可选值,比如可以包括第一值、第二值、第三值和第四值,其中,第一值不高于回收标准,第二值低于第三值,且高于回收标准,第三值低于第四值。或者可以说,各个可选值代表了物理页的活跃度的级数,值越高,活跃度的级数越高。
作为举例,可以通过设置标志位来评估物理页的活动程度,假设设置两个标志位,每个标志位的可选值为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)逐级升高。
步骤S702,获取第一目标进程对应的目标物理页。
步骤S703,读取目标物理页的活跃度的值。
步骤S702至步骤S703分别与第一实施例中的步骤S401至步骤S402相同,此处不再赘述。
步骤S704,判断目标物理页的活跃度的值是否高于回收标准,若是,则执行步骤S705,若否,则执行步骤S707。
在读取目标物理页的活跃度的值之后,可以判断目标物理页的活跃度的值是否高于回收标准,活跃度的值高于回收标准的物理页处于活动状态,若是,则执行步骤S705,若否,则执行步骤S707。
步骤S705,若目标物理页的类型为文件页,则按照第二幅度降低目标物理页的活跃度。
在获取目标进程对应的目标物理页之后,在降低目标物理页的活跃度之前,可以根据目标物理页的类型来设置其活跃度的降低幅度。当目标物理页为匿名页时,则按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,则按照第二幅度降低目标物理页的活跃度,并且第一幅度低于第二幅度。在第三实施例中,第一幅度为降低一级,可以作为当目标物理页为匿名页时的回收流程,此处不再赘述。本实施例中主要用于举例说明当目标物理页的类型为文件页时,对目标物理页的回收流程。由于第一幅度低于第二幅度,那么本实施例中第二幅度可以为每次降低两级。
步骤S706,开启计时器。
可以设置有预设时长,作为反悔时长,关于预设时长的设置,请参见第二实施例,本发明实施例中不再赘述。
当计时器记录的时长达到预设时长时,重复执行步骤S703至步骤S704。可以只重复一次,也就是说,若第一次重复执行步骤S703至步骤S704时,仍然判定目标物理页的活跃度的值高于回收标准,则不再执行步骤S705,而是直接退出对目标物理页的回收流程,也就是说,对活动状态的物理页只进行一次回收尝试。为了提高回收效率,回收更多的内存,优选的,对活动状态的物理页进行两次或两次以上的回收尝试,也就是说,可以对步骤S703至步骤S704重复执行两次或两次以上。
重复次数可以预设,实际场景测试结果表明,前三次回收尝试的回收效率更高,第四次及之后的回收尝试回收效率很低,因此重复次数可以设置为三次。另外,也可以根据内存占用率设置重复次数,内存占用率越高,回收次数越多。或者,在实际使用中,也可以根据其他考虑对重复次数进行设置,此处不做限定。
步骤S707,回收目标物理页。
若目标物理页的活跃度的值不高于回收标准,则回收目标物理页。
下面按照第四实施例提供的方法,以首次读取的活跃度的值的不同情况的进行举例说明,假设步骤S703至步骤S704的最大重复执行次数设置为3次:
一、假设在回收尝试的过程中,目标物理页未被访问,其活跃度的值未增加,那么:
若首次读取目标物理页的活跃度的值为第四值,那么执行步骤S705后,目标物理页的活跃度的值被设置为第二值,之后第一次重复执行步骤S703至步骤S704,由于活跃度的值仍然高于回收标准,继续对活跃度的值降低两级,由于最低的级数为第一值,因此设置为第一值,之后第二次重复执行步骤S703至步骤S704,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第四值,那么该物理页至少需要两次重复执行步骤S703至步骤S704方能被回收。
若首次读取目标物理页的活跃度的值为第三值,那么执行步骤S705后,目标物理页的活跃度的值被设置为第一值,之后第一次重复执行步骤S703至步骤S704,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第三值,那么该物理页至少需要一次重复执行步骤S703至步骤S704方能被回收。
若首次读取目标物理页的活跃度的值为第二值,那么执行步骤S705后,目标物理页的活跃度的值被设置为第一值,之后第一次重复执行步骤S703至步骤S704,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第二值,那么该物理页至少需要一次重复执行步骤S703至步骤S704方能被回收。
若首次读取目标物理页的活跃度的值为第一值,由于活跃度的值不高于回收标准,对目标物理页进行回收。若首次读取目标物理页的活跃度的值为第一值,那么该物理页不需要重复执行步骤S703至步骤S704就能被回收。
可见,执行本发明的回收步骤之前,活跃度的值越高的物理页,其越不容易被回收,也就是说,本发明能够优先回收活跃度较低的物理页,实现对活动状态的物理页的精细化分类回收。
与第三实施方式相比,本实施方式通过增加活跃度的值的降低幅度,有利于减少步骤S703至步骤S704的重复执行次数,提高对活动状态的文件页的回收效率。
二、假设在回收尝试的过程中,目标物理页被访问,则其活跃度的值会增加,那么和第一种情况相比,***需要更多次的回收尝试才能对目标物理页进行回收。在实际应用中,***通常对物理页进行有限次数的回收尝试,若在有限次数的回收尝试后,目标物理页的活跃度的值仍然高于回收标准,则表明目标物理页的活跃度很高,对于目标进程来说是价值更高的物理页,***不会回收目标物理页,在进程运行效果与内存资源充足之间取得更加合理的平衡。
通过第三实施例的方法和第四实施例的方法可以分别实现对目标进程的处于活动状态的匿名页和文件页的回收,如下表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浏览器、手机管家、应用中心和新浪微博等应用作为目标应用,即测试对象,以目标应用中的进程作为目标进程,对目标进程进行页面回收,以实现对目标应用的内存回收。以豆瓣为例,在测试过程中,首先对豆瓣的目标进程的匿名页执行一次步骤S603至步骤S604或者对其文件页执行一次步骤S703至步骤S704,简称为对豆瓣进行第一次回收,根据回收测试前豆瓣占用的内存大小和第一次回收后豆瓣占用的内存大小,可以计算得到对豆瓣的第一次回收率,为2.64%;之后对豆瓣的目标进程的匿名页第二次执行步骤S603至步骤S604、或者对其文件页第二次执行步骤S703至步骤S704,简称为对豆瓣进行第二次回收,根据第一次回收后豆瓣占用的内存大小和第二次回收后豆瓣占用的内存大小,可以计算得到对豆瓣的第二次回收率,为8.27%;依此类推,可以得到对豆瓣的第三次回收率为26.73%、对豆瓣的第四次回收率为0.46%、对豆瓣的第五次回收率为0.08%。
观察表1中同一应用不同次回收的回收率,可以看出,各应用在前三次的回收率均远远大于第四次和第五次的回收率,并且,累计进行三次回收的回收率(根据第三次回收后应用占用的内存大小和回收测试前应用占用的内存大小计算得到)和累计进行五次回收的回收率相差不大,说明回收次数过多,回收效率不高,且浪费资源,因此优选的是对应用进行有限次数的页面回收。
另外,现有的针对进程进行回收的方法,只对非活动状态的物理页进行回收,回收率对应于表1中的第一次回收率,通过比较表1中同一应用的第一次回收率和累计进行三次回收的回收率,可以发现,后者是前者的数倍,倍数在2倍至17倍之间,可见,和现有技术相比,本发明实现了更高的回收率,对于缓解***内存压力具有明显效果。
综上所述,本发明提供了一种针对进程进行内存回收的方法,并且能够对活动状态的物理页进行选择性回收,极大的提高了内存回收的效率。并且,本发明运行用户自行选择需要执行内存回收的应用程序,而不是由操作***自行选择哪些应用程序执行内存回收的操作。这样,用户可以根据使用的实际情况选择在后续一段时间内不需要频繁使用的应用程序执行内存回收操作,从而回收一部分应用程序所占用的内存资源。
当然,上述针对第一目标进程执行一次内存回收操作的具体步骤,也可以应用在对第二目标进程执行一次内存回收操作上,也就是,对第二目标进程执行一次内存回收操作时,也可以采用图4至图7的流程实现。
由于本发明在对目标应用程序执行内存回收操作时,通过目标应用程序的多开标识区分的主应用程序以及分身应用程序,因此并不会同时对主应用程序以及分身应用程序执行内存回收操作,而是仅仅针对主应用程序或者分身应用程序执行内存回收操作。并且,针对主应用程序以及分身应用程序,分别采用不同的内存回收策略,从而减小对主应用程序热启动时的影响,又能够及时回收分身应用程序所占用的内存。
上面对本发明实施例中的终端设备控制方法进行了描述,下面对本发明实施例中的终端设备控制装置进行描述。
参见图8,本发明的终端设备控制装置包括:
第一获取模块801,第一获取模块,用于获取对目标应用程序执行内存回收操作的指令,例如,获取目标应用程序置于后台运行的指令,或者获取用户发出的预设操作指令,又或者,目标应用程序的同名关联应用程序置于前台运行的指令。
判断模块802,用于判断目标应用程序是否为多开应用程序。例如,操作***遍历当前运行的应用程序,查找是否存在与目标应用程序具有相同的UID以及相同包名的应用程序,如果存在相同UID以及相同包名的应用程序,表示目标应用程序是一个多开应用程序。
或者,查看目标应用程序的属性信息,判断目标应用程序是否存在多开标识,如果多开标识是“01”或者“10”等表示目标应用程序是分身应用程序,则确定目标应用程序是多开应用程序。
第二获取模块803,用于确定目标应用程序为多开应用程序时,获取目标应用程序的第一多开标识。如通过获取目标应用程序的属性信息获取目标应用程序的第一多开标识。
第三获取模块804,用于根据目标应用程序的第一多开标识获取所述应用程序对应的第一目标进程,如获取目标应用程序的进程列表获取目标应用程序的第一目标进程。
内存回收模块805,用于对第一目标进程执行内存回收操作。对第一目标进程执行内存回收操作可以是执行一次,也可以是执行多次,并且,可以针对目标应用程序是主应用程序或者分身应用程序的情况,分别采用不同的执行策略,即执行内存回收操作的次数不相同。
本发明的内存回收模块可805可以有多种实施方式,参见图9,本发明实施例中内存回收模块的第一实施例包括:
第四获取模块901,用于获取第一目标进程对应的目标物理页。
第一读取模块902,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关。
降低模块903,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,并且,活跃度的值高于回收标准的物理页处于活动状态。
第二读取模块904,用于在降低模块降低目标物理页的活跃度之后,再次读取目标物理页的活跃度的值。
回收模块905,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
请参见图10,本发明实施例中内存回收模块805第二实施例包括:
第五获取模块1001,用于获取第一目标进程对应的目标物理页。
第一读取模块1002,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标记目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关。
降低模块1003,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,活跃度的值高于回收标准的物理页处于活动状态。
优选的,降低模块1003包括有设置单元1004以及降低单元1005,其中,设置单元1004用于当目标物理页的活跃度为第三值时,将目标物理页的活跃度设置为第二值;当目标物理页的活跃度为第二值时,将目标物理页的活跃度设置为第一值。降低单元1005用于当目标物理页为匿名页时,按照第一幅度降低目标物理页的活跃度;当目标物理页为文件页时,按照第二幅度降低目标物理页的活跃度;并且,第一幅度低于第二幅度。
第二设置模块1006,用于在计时模块1007开启计时器之前,根据目标进程的优先级设置预设时长,预设时长与目标进程的优先级正相关。
计时模块1007,用于在降低目标物理页的活跃度之后,在读取目标物理页的活跃度的值之前,开启计时器。
第二读取模块1008,用于在降低模块降低目标物理页的活跃度之后,读取目标物理页的活跃度的值。
回收模块1009,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
在实际使用中,也可以不采用第二设置模块,而是采用第一设置模块,第一设置模块用于在计时模块开启计时器之前,根据内存占用率设置预设时长,预设时长与内存占用率负相关。
需要说明的是,如果对第二目标进程执行内存回收操作,也可以采用内存回收模块805实现。
本发明实施例还提供了一种终端,如图11所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端设备可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文缩写:PDA)等任意终端设备。
参考图11,终端设备包括:电源1103、存储器1102、处理器1101以及存储在存储器中并可在处理器上运行的计算机程序。其中,处理器1101执行计算机程序时实现上述各个信息处理方法实施例中的步骤,例如图1所示的步骤S101至S106等。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器中,并由处理器执行,以完成本发明。上述的一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。
本领域技术人员可以理解,图11中示出的结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,例如上述的终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(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)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
当然,上述的方案只是本发明优选的实施方案,实际应用是还可以有更多的变化,例如,待处理信息的设置方式改变、对待处理信息的不可见方式的改变,这样的改变并不影响本发明的实施,也应该包括在本发明的保护范围内。
Claims (10)
1.一种终端设备控制方法,其特征在于,该方法包括:
获取对目标应用程序执行内存回收操作的指令;
判断所述目标应用程序是否为多开应用程序,如是,获取所述目标应用程序的第一多开标识;
根据所述目标应用程序的第一多开标识获取所述目标应用程序对应的第一目标进程;
对所述第一目标进程执行内存回收操作。
2.根据权利要求1所述的终端设备控制方法,其特征在于,获取对目标应用程序执行内存回收操作的指令包括:
获取所述目标应用程序的同名关联应用程序置于前台运行的指令;
其中,所述目标应用程序与所述同名关联应用程序具有相同的应用程序名。
3.根据权利要求1所述的终端设备控制方法,其特征在于,获取对目标应用程序执行内存回收操作的指令包括:
获取所述目标应用程序置于后台运行的指令。
4.根据权利要求1所述的终端设备控制方法,其特征在于,确认所述目标应用程序为多开应用程序后,该方法还包括:
获取所述目标应用程序的同名关联应用程序;
判断所述同名关联应用程序是否置于后台运行,如是,则获取置于后台运行的所述同名关联应用程序的第二多开标识,根据所述第二多开标识获取所述同名关联应用程序对应的第二目标进程;
对所述第二目标进程执行内存回收操作。
5.根据权利要求1至4任一项所述的终端设备控制方法,其特征在于,对所述第一目标进程执行内存回收操作包括:
根据所述第一多开标识判断所述目标应用程序为主应用程序或者分身应用程序;
如确定所述目标应用程序为主应用程序,则对所述第一目标进程执行不多于第一预设次数的内存回收操作;
如确定所述目标应用程序为分身应用程序,则对所述第一目标进程执行不少于第二预设次数的内存回收操作;
其中,所述第一预设次数小于或等于所述第二预设次数。
6.根据权利要求1至4任一项所述的终端设备控制方法,其特征在于,对所述第一目标进程执行一次所述内存回收操作包括:
获取所述第一目标进程对应的目标物理页;
读取所述目标物理页的活跃度的值,所述目标物理页的活跃度用于标识所述目标物理页的活动程度,所述目标物理页的活跃度的值与所述目标物理页的活动程度正相关;
若所述目标物理页的活跃度的值高于回收标准,且活跃度的值高于所述回收标准的物理页处于活动状态,则降低所述目标物理页的活跃度;
再次读取所述目标物理页的活跃度的值;
若所述目标物理页的活跃度的值不高于所述回收标准,则回收所述目标物理页。
7.一种终端设备控制装置,其特征在于,该装置包括:
第一获取模块,用于获取对目标应用程序执行内存回收操作的指令;
判断模块,用于判断所述目标应用程序是否为多开应用程序;
第二获取模块,用于确定所述目标应用程序为多开应用程序时,获取所述目标应用程序的第一多开标识;
第三获取模块,用于根据所述目标应用程序的第一多开标识获取所述目标应用程序对应的第一目标进程;
内存回收模块,用于对所述第一目标进程执行内存回收操作。
8.根据权利要求7所述的终端设备控制装置,其特征在于,获取第一获取模块具体用于:
获取所述目标应用程序的同名关联应用程序置于前台运行的指令;
其中,所述目标应用程序与所述同名关联应用程序具有相同的应用程序名。
9.一种终端设备,其特征在于,所述终端设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至6中任意一项所述终端设备控制方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1至6中任意一项所述终端设备控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710693512.4A CN108228472B (zh) | 2017-08-14 | 2017-08-14 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710693512.4A CN108228472B (zh) | 2017-08-14 | 2017-08-14 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108228472A true CN108228472A (zh) | 2018-06-29 |
CN108228472B CN108228472B (zh) | 2021-08-13 |
Family
ID=62655093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710693512.4A Active CN108228472B (zh) | 2017-08-14 | 2017-08-14 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228472B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109358955A (zh) * | 2018-09-27 | 2019-02-19 | 联想(北京)有限公司 | 进程管理方法和装置 |
CN110968472A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 进程的处理方法、装置、存储介质和处理器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015048855A1 (en) * | 2013-10-05 | 2015-04-09 | Waratek Limited | Multi-tenant monitoring |
CN105279098A (zh) * | 2014-07-22 | 2016-01-27 | 中兴通讯股份有限公司 | 内存的清理方法及装置 |
CN106484538A (zh) * | 2016-10-10 | 2017-03-08 | 广东欧珀移动通信有限公司 | 一种终端设备的内存控制方法、装置及终端设备 |
CN106648908A (zh) * | 2016-10-10 | 2017-05-10 | 广东欧珀移动通信有限公司 | 一种应用进程的控制方法、装置和移动终端 |
-
2017
- 2017-08-14 CN CN201710693512.4A patent/CN108228472B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015048855A1 (en) * | 2013-10-05 | 2015-04-09 | Waratek Limited | Multi-tenant monitoring |
CN105279098A (zh) * | 2014-07-22 | 2016-01-27 | 中兴通讯股份有限公司 | 内存的清理方法及装置 |
CN106484538A (zh) * | 2016-10-10 | 2017-03-08 | 广东欧珀移动通信有限公司 | 一种终端设备的内存控制方法、装置及终端设备 |
CN106648908A (zh) * | 2016-10-10 | 2017-05-10 | 广东欧珀移动通信有限公司 | 一种应用进程的控制方法、装置和移动终端 |
Non-Patent Citations (2)
Title |
---|
WBD880419: "linux内存管理:内存页面的周转", 《HTTPS://WWW.IT610.COM/ARTICLE/4408390.HTM》 * |
蒋加伏: "《大学计算机》", 30 June 2017 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109358955A (zh) * | 2018-09-27 | 2019-02-19 | 联想(北京)有限公司 | 进程管理方法和装置 |
CN110968472A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 进程的处理方法、装置、存储介质和处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN108228472B (zh) | 2021-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228449A (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN104808951B (zh) | 进行存储控制的方法和设备 | |
CN106933733A (zh) | 一种确定内存泄露位置的方法和装置 | |
US9495286B2 (en) | Method and arrangement for completion or recovery of data transactions in a flash type memory device using a commit process | |
CN107122130B (zh) | 一种数据重删方法及装置 | |
CN107451831A (zh) | 任务推送方法 | |
CN108228339A (zh) | 一种内存回收方法及装置、终端设备及计算机可读存储介质 | |
CN108205473A (zh) | 内存处理方法及装置、计算机装置及计算机可读存储介质 | |
CN109032533B (zh) | 一种数据存储方法、装置和设备 | |
CN108205498A (zh) | 内存回收方法及装置、计算机装置及计算机可读存储介质 | |
CN108287760A (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN108205471A (zh) | 内存回收方法及装置、计算机装置及计算机可读存储介质 | |
CN107229414A (zh) | 存储空间回收方法及装置 | |
CN108228340A (zh) | 终端控制方法及装置、终端设备及计算机可读存储介质 | |
CN106021566A (zh) | 一种提高单台数据库并发处理能力的方法、装置及*** | |
CN108427736A (zh) | 一种用于查询数据的方法 | |
CN108228472A (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN105930178A (zh) | 一种可配置的参数动态装载方法及*** | |
CN110851817A (zh) | 一种终端类型识别方法及装置 | |
CN107220287A (zh) | 用于日志查询的索引管理方法、装置、存储介质及设备 | |
CN108228342A (zh) | 终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN108287761A (zh) | 内存回收方法及装置、终端设备及计算机可读存储介质 | |
CN103905310B (zh) | 报文处理的方法及转发设备 | |
CN106815232A (zh) | 目录管理方法、装置及*** | |
CN105389128B (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 |