CN108228449B - 终端设备控制方法及装置、终端设备及计算机可读存储介质 - Google Patents

终端设备控制方法及装置、终端设备及计算机可读存储介质 Download PDF

Info

Publication number
CN108228449B
CN108228449B CN201710698674.7A CN201710698674A CN108228449B CN 108228449 B CN108228449 B CN 108228449B CN 201710698674 A CN201710698674 A CN 201710698674A CN 108228449 B CN108228449 B CN 108228449B
Authority
CN
China
Prior art keywords
memory
target
physical page
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.)
Active
Application number
CN201710698674.7A
Other languages
English (en)
Other versions
CN108228449A (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.)
Wuhan Xingji 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 CN201710698674.7A priority Critical patent/CN108228449B/zh
Publication of CN108228449A publication Critical patent/CN108228449A/zh
Application granted granted Critical
Publication of CN108228449B publication Critical patent/CN108228449B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • 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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Electrically Operated Instructional Devices (AREA)

Abstract

本发明提供一种终端设备控制方法及装置、终端设备及计算机可读存储介质,该方法包括获取目标应用程序当前占用的内存值;判断目标应用程序当前占用的内存值是否大于第一预设阈值,如是,对目标应用程序执行内存回收操作;获取对目标应用程序执行内存回收操作所回收的内存量,判断所回收的内存量是否小于内存回收阈值,如是,关闭目标应用程序。该装置用于实现上述的终端设备控制方法。本发明提供的终端设备具有处理器以及存储器,处理器执行计算机程序时可以实现上述的终端设备控制方法。本发明的计算机可读存储介质上存储有用于实现上述方法计算机程序。本发明可以有效判断应用程序是否发生内存泄漏的情况,并且及时关闭发生内存泄漏的应用程序。

Description

终端设备控制方法及装置、终端设备及计算机可读存储介质
技术领域
本发明涉及电子设备的控制领域,具体地,是在一种在终端设备上实现终端设备控制方法以及实现这种方法的装置,还涉及一种实现上述方法的终端设备以及计算机可读存储介质。
背景技术
智能手机、平板电脑等终端设备成为人们日常生活中最经常使用的电子设备,人们喜欢在智能电子设备上安装各种应用程序,并且在终端设备上同时运行大量的应用程序。由于每一应用程序都占用一定的内存资源,当终端设备运行大量的应用程序后,将使用大量的内存资源,而终端设备的操作系统中,为了加快对磁盘进行读写操作的速度,通常会将大量的数据缓存在内存中。进程在使用内存前,需要提出申请并开始占用内存,当使用完内存后再及时回收内存。由于用户在使用终端应用的过程中,经常会频繁更换应用,为了减少用户的等待时长,操作系统通常会为转入后台的应用进程保留其占用的内存。但是,当后台应用过多,内存被大量占用而得不到回收时,会因为内存分配不足导致操作系统运行出现异常。
为了避免因内存分配不足导致的系统异常,操作系统引入了对内存的回收机制。例如,当内存不足时,系统会关闭一些后台进程来回收其占用的内存。但是,当用户需要使用这些进程对应的应用程序时,这些进程需要完全的进行重新加载,耗时长,降低用户体验。因此,现有技术提出在不关闭进程的情况下进行内存回收的方法。近期最少使用链表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是本发明终端设备实施例的结构框图。
以下结合附图及实施例对本发明作进一步说明。
具体实施方式
本发明终端设备控制方法是应用在诸如智能手机或者平板电脑等终端设备上,用于判断应用程序是否出现内存泄漏的情况,并且对发生内存泄漏的应用程序执行关闭操作。本发发明的终端设备控制装置运行在终端设备上,并且用于实现上述的终端设备控制方法。
由于应用程序在运行过程中,可能因应用程序的编程出错等原因导致内存泄漏的情况,一旦发生内存泄漏,将导致应用程序占用的内存不断增加且泄漏的内存不能被回收,有可能导致终端设备因可使用的内存过小而导致运行缓慢甚至操作系统崩溃。因此,本发明提供一种有效判断应用程序是否发生内存泄漏的情况,并且及时对发生内存泄漏的应用程序执行关闭操作,从而避免影响终端设备的运行。
本发明终端设备控制方法的一种实施方式如图1所示,包括执行以下步骤:
步骤S101,获取目标应用程序当前占用的内存值。
终端设备运行过程中,可以实时的监测各个应用程序所占用的内存值,例如,终端设备可以计算某一目标应用程序当前所占用的内存值。例如,获取目标应用程序正在运行的目标进程,如获取目标应用程序的进程表,进程表中记录目标应用程序当前所有进程。然后,通过操作系统的Activity Manager的getProcessMemoryInfo可以获取每一个进程所占用的内存信息。
由于每一个目标进程都有自己唯一的进程识别号PID,因此,可以根据目标进程的进程识别号PID获取每一个目标进程所占内存信息。获取每一个目标进程所占用的内存信息后,将目标应用程序的所有目标进程所占用的内存相加,即可以计算出目标应用程序当前所占用的内存值。
步骤S102,判断目标应用程序当前所占用的内存值是否大于第一预设阈值,如是,执行步骤S103。
获取目标应用程序当前所占用的内存值后,需要将目标应用程序当前所占用的内存值与第一预设阈值比对,判断目标应用程序当前占用的内存值是否大于第一预设阈值。本实施例中,第一预设阈值可以是预先设定的阈值,例如是操作系统预先默认设置的阈值。当然,针对不同的应用程序,第一预设阈值可以不相同,也就是不同的应用程序对应有不同的第一预设阈值。如常用的即时聊天应用程序,由于占用的内存很大,因此第一预设阈值可以设置得较大,如300M,对于诸如闹钟等应用程序,占用的内存很小,对应的第一预设阈值可以设置得很小,如20M。
优选的,第一预设阈值是通过目标应用程序日常运行时占用的内存量统计获得的数据,例如获取目标应用程序在连续十次或者二十次运行时占用的内存的最大值,并计算多次运行时内存最大值的平均值,以该平均值的一定倍数作为第一预设阈值,如第一预设阈值是该平均值的1.2倍。本实施例中,目标应用程序预设次数的运行过程中,多次运行的内存最大值的平均值可以作为目标应用程序的常用上限内存阈值,也就是常用上限内存阈值可以通过对目标应用程序过去一定次数的运行时使用的内存最大值进行平均计算获得。
当然,对于初次运行的目标应用程序,由于不存在过去多次运行的情况,因此,可以通过获取其他用户使用同一目标应用程序时,目标应用程序多次运行时占用的内存最大值的平均值作为常用上限内存阈值。因此,目标应用程序的常用上限内存阈值可以通过云服务器获得,也就说通过其他用户的使用数据获得。
又或者,获取目标应用程序的属性信息,如果目标应用程序的属性信息中包含有目标应用程序运行时通常占用内存量的数据,则获取该数据的上限值作为目标应用程序的常用上限内存阈值。
本实施例中,第一预设阈值需要大于常用上限内存阈值,优选的,可以是常用上限内存阈值的预设倍数,如1.2倍或者1.5倍。
步骤S103,目标应用程序执行内存回收操作。
在步骤S102中,如果确定目标应用程序当前占用的内存值大于第一预设阈值,表示目标应用程序当前占用的内存值过大,并且已经超过合理的使用范围,因此,可以确定目标应用程序可能发生了内存泄漏的情况。为了进一步确定目标应用程序是否发生内存泄漏的情况,需要进行进一步的判断,也就是判断对目标应用程序执行内存回收操作后,内存回收量是否小于预设的内存回收阈值。
因此,步骤S103中,首先对目标应用程序执行内存回收操作。对目标应用程序执行内存回收操作有很多种方法,常见的方法是获取目标应用程序的目标进程,并且获取目标进程的物理页,对非活跃的物理页进行回收。然而,如果仅仅回收非活跃的物理页,内存回收量非常少,因此,本发明提供一种可以针对活跃物理页进行回收的方法,具体的回收方法将在下文详细描述。
需要说明的是,目标进程对应的物理页通常包括共享文件页、匿名页、脏文件页等,由于共享文件页、匿名页、脏文件页都是不可以回收的物理页,因此,在执行内存回收的过程中,是不会对共享文件页、匿名页、脏文件页执行回收操作的。
另外,一旦应用程序发生内存泄漏的情况,所泄漏的内存通常以匿名页的形式产生,也就是内存回收操作无法回收的物理页,因此,通过回收内存的方式难以有效的回收应用程序的内存,导致目标应用程序的内存回收效率非常低。
步骤S104,判断目标应用程序的内存回收量是否小于内存回收阈值,如是,转入步骤S105。
如果目标应用程序发生内存泄漏的情况,被占用的内存占用大量的匿名页而无法回收,因此步骤S103中对目标应用程序所回收的内存量非常少。因此,在执行步骤S103后,可以计算步骤S103所回收的内存量,也就是计算回收的物理页占用的内存,并且判断回收的内存量是否大于内存回收阈值。
本实施例中,内存回收阈值可以是根据不同的目标应用程序设定的阈值,例如,针对某一目标应用程序,内存回收阈值是20M,对于另一目标应用程序,内存回收阈值可以是30M。或者,内存回收阈值是一个百分比值,如计算目标应用程序内存回收率。目标应用程序的内存回收率是执行内存回收操作后,所回收的内存量与目标应用程序回收内存前所占用的内存量的比值,例如,执行内存回收前,目标应用程序占用的内存量为200M,执行内存回收操作所回收的内存为30M,则目标应用程序的内存回收率是15%。本实施例中,优选使用内存回收率作为内存回收阈值,因此,内存回收阈值可以是一个固定的阈值。
例如,预设的内存回收阈值是20%,如果执行一次内存回收操作后,目标应用程序所回收的内存量小于20%,则表示目标应用程序有大量的物理页不能被回收,目标应用程序很可能出现内存泄漏的情况,因此需要关闭目标应用程序。
然而,如果目标应用程序是前台运行的应用程序,或者正在后台运行但出于工作状态的应用程序,对目标应用程序执行关闭操作将会严重影响用户体验,因此,需要执行步骤S105以避免对用户造成的影响。
步骤S105,判断目标应用程序是否处于前台工作或者处于工作状态,如不是,执行步骤S106。
在关闭目标应用程序前,需要判断目标应用程序是否置于前台工作,例如,通过获取目标应用程序的工作状态即可以判断目标应用程序是否为前台工作的应用程序。
当然,还需要判断目标应用程序是处于工作状态,例如目标应用程序是否正在下载数据或者上传数据、播放音乐、导航等。本实施例中,可以通过检测目标应用程序是否正在使用硬件设备来判断目标应用程序是否处于工作状态。例如,如果目标应用程序正在下载或者上传数据,则目标应用程序将使用无线通信模块进行数据交互,因此可以通过监测目标应用程序是否正在使用无线通信模块来判断目标应用程序是否正在上传或者下载数据。如果目标应用程序正在播放音乐或者在导航,则目标应用程序将使用扬声器或者向听筒输出音频信号,因此可以通过获取目标应用程序是否占用扬声器或者听筒等硬件锁来判断目标应用程序是否在播放音乐或者正在导航。
可以理解,通过判断目标应用程序是否正在使用硬件资源,或者判断目标应用程序是否占用硬件锁等方式确定目标应用程序是否处于工作状态。
步骤S106,关闭目标应用程序。
如果步骤S105确定目标应用程序没有处于前台工作,并且也不是处于工作状态,则执行步骤S106,关闭目标应用程序,从而避免目标应用程序继续占用大量的内存,也避免操作系统因可使用内存不足而导致崩溃的情况发生。
可以理解,如果步骤S105中,当确定目标应用程序处于前台工作状态或者正在处于工作状态,则不对目标应用程序执行内存回收操作,而是等待目标应用程序转入后台工作时,并且目标应用程序不再处于工作状态后,将目标应用程序关闭。
在第一实施例中,如果步骤S102判断目标应用程序当前所占用的内存值大于第一预设阈值后,即确定目标应用程序所使用的内存异常,并对目标应用程序执行内存回收操作,可能存在误判的情况。例如,目标应用程序由于当前需要进行大量的运算而导致使用的内存增加。为了避免这种情况,还需要对目标应用程序使用的内存情况进行进一步的判断,基于这样的想法,终端设备的控制方法第二实施例的流程如图2所示。
步骤S201,获取目标应用程序当前占用的内存值。
步骤S202,判断目标应用程序当前占用的内存值是否大于第一预设阈值,如是,转入步骤S203。
步骤S201至步骤S202的操作与步骤S101至步骤S102的操作相同,不再赘述。
步骤S203,判断目标应用程序当前占用的内存值是否持续上升并且大于第二预设阈值,如是,转入步骤S204。
在确定目标应用程序当前占用的内存值大于第一预设阈值后,还进一步判断目标应用程序所占用的内存值是否持续上升,并且超过第二预设阈值。由于目标应用程序发生内存泄漏时,每一次接收新的指令都会产生新的泄漏的内存,因此目标应用程序占用的内存值将持续的上升。
如果目标应用程序所占用的内存值上升并且大于第二预设阈值时,可以认为目标应用程序占用的内存量出现异常情况。可选的,第二预设阈值可以是一个固定的数值,也可以是针对不同应用程序设定不同的数值。例如,对于内存使用量较大的应用程序,第二预设阈值可以设置得较大,如200M,对于内存使用量较小的应用程序,第二预设阈值可以设置得较小,如100M。
优选的,第二预设阈值大于第一预设阈值,并且,第二预设阈值是第一预设阈值的预设倍数,如第二预设阈值是第一预设阈值的1.2倍。可以理解,由于不同的应用程序对应有相应第一预设阈值,因此,不同的应用程序也相应的设置有第二预设阈值。例如,对于同一应用程序,第二预设阈值是第一预设阈值的预设倍数,并且该预设倍数是大于1的倍数,如1.2倍或者1.3倍。
在监测目标应用程序使用的内存量时,如果确定目标应用程序所占用的内存量没有持续上升,或者上升没有到第二预设阈值,则表示目标应用程序可能在正常使用,并没有发生内存泄漏的情况,因此不会执行内存回收操作,也不会关闭目标应用程序。
步骤S204,目标应用程序执行内存回收操作。
如果步骤S203中,确定目标应用程序占用的内存量持续上升并且超过第二预设阈值,则表示目标应用程序占用的内存量异常,因此需要对目标应用程序执行内存回收操作。对目标应用程序执行内存回收操作可以是获取目标应用程序正在运行的目标进程,并获取目标进程的物理页,对目标进程的非活跃物理页进行回收,优选的,还回收部分活跃物理页,回收活跃物理页的方法将在下文详细介绍。
步骤S205,判断目标应用程序执行内存回收操作后,回收的内存量是否小于内存回收阈值,如是,转入步骤S206。
在执行内存回收操作后,获取目标应用程序执行内存回收操作所回收的内存值,并且将回收的内存值与内存回收阈值进行对比,从而判断目标应用程序所回收的内存值是否小于内存回收阈值。如果大于内存回收阈值,表示目标应用程序没有发生内存泄漏的情况,则不需要对目标应用程序执行关闭的处理。
步骤S206,判断目标应用程序是否处于前台工作或者处于工作状态,如不是,则执行步骤S207。
步骤S207,关闭目标应用程序。
可见,本发明通过对目标应用程序使用内存量的监测,并且通过对目标应用程序执行一次内存回收操作判断目标应用程序可回收的内存量,结合两个因素确定目标应用程序是否发生内存泄漏的情况,从而准确的识别出目标应用程序是否发生内存泄漏。一旦识别出目标应用程序出现内存泄漏的情况,则关闭目标应用程序,从而避免目标应用程序继续占用大量的内存而影响操作系统的运行。
本发明对目标应用程序进行的内存回收操作首先是获取目标应用程序当前正在运行的目标进程,如获取目标应用程序的进程列表,从而确定目标应用程序当前正在运行的目标进程,然后分别对每一目标进程执行一次内存回收操作。执行内存回收操作主要是对物理页进行回收,而判断物理页存储数据的价值高低可以有很多角度,现有技术通常以物理页的活跃程度(或称活跃度)高低来评价物理页存储数据的价值高低,物理页的活跃度越高,系统通常认为该物理页存储数据的价值越高。为了比较物理页的活跃度,现有技术引入近期最少使用链表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%
QQ 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倍之间,可见,和现有技术相比,本发明实现了更高的回收率,对于缓解系统内存压力具有明显效果。
综上所述,本发明提供了一种针对进程进行内存回收的方法,并且能够对活动状态的物理页进行选择性回收,极大的提高了内存回收的效率。并且,由于针对不同类型的应用程序采用不同的内存回收策略,如针对用户较为喜爱的应用程序,执行内存回收操作的次数较少,而针对用户喜爱程度较低的应用程序,则执行内存回收操作的次数较多,从而避免对用户较为喜爱的应用程序因频繁的执行进程加载的操作而影响响应速度。
可见,本发明通过目标应用程序占用的内存值以及可回收的内存值两个因素判断目标应用程序是否发生内存泄漏,并且在执行内存回收过程中,人为的降低物理页的活跃度,从而加快活跃物理页的老化,从而将活跃物理页进行回收,能够让目标应用程序是否更多的内存,在判断目标应用程序是否发生内存泄漏时,能够更加准确的判断出目标应用程序是否发生内存泄漏的情况。
上面对本发明实施例中的终端设备控制方法进行了描述,下面对本发明实施例终端设备控制装置进行描述。
参见图7,本发明的终端设备控制装置包括:
第一获取模块701,用于获取目标应用程序当前占用的内存值,如获取目标应用程序的进程表,并且获取每一个目标进程占用的内存信息,计算出目标应用程序占用的内存值。
内存回收模块702,用于确定目标应用程序当前占用的内存值大于第一预设阈值时,对目标应用程序执行内存回收操作。优选的,确定目标应用程序当前占用的内存大于第一预设阈值后,还判断目标应用程序所占用的内存是否持续增加,并且超过第二预设阈值,如果确定目标应用程序所占用的内存持续增加并且超过第二预设阈值时,才执行目标应用程序的内存回收操作。其中,第二预设阈值大于第一预设阈值,并且,第二预设阈值可以是第一预设阈值的预设倍数,如1.2倍或者1.3倍。
第二获取模块703,用于获取对目标应用程序执行内存回收操作所回收的内存量。
关闭模块704,用于确定目标应用程序执行内存回收操作后,所回收的内存量小于内存回收阈值时,关闭目标应用程序。
内存回收模块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至S106等。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器中,并由处理器执行,以完成本发明。上述的一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。
本领域技术人员可以理解,图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.一种终端设备控制装置,其特征在于,该装置包括:
第一获取模块,用于获取目标应用程序当前占用的内存值;
内存回收模块,用于确定所述目标应用程序当前占用的内存值大于第一预设阈值时,对所述目标应用程序执行内存回收操作;
第二获取模块,用于获取对所述目标应用程序执行内存回收操作所回收的内存量;
关闭模块,用于确定所回收的内存量小于内存回收阈值时,关闭所述目标应用程序;
内存回收模块包括:
第三获取模块,用于获取目标应用程序对应的目标进程,并且获取目标进程对应的目标物理页;
第一读取模块,用于读取目标物理页的活跃度的值,目标物理页的活跃度用于标识目标物理页的活动程度,目标物理页的活跃度的值与目标物理页的活动程度正相关;
降低模块,用于当目标物理页的活跃度的值高于回收标准时,降低目标物理页的活跃度,并且,活跃度的值高于回收标准的物理页处于活动状态;
第二读取模块,用于在降低模块降低目标物理页的活跃度之后,再次读取目标物理页的活跃度的值;
回收模块,用于当目标物理页的活跃度的值不高于回收标准时,回收目标物理页。
7.根据权利要求6所述的终端设备控制装置,其特征在于,所述内存回收模块还用于:
确定所述目标应用程序当前占用的内存大于第一预设阈值后,对所述目标应用程序执行内存回收操作前,还执行:确定所述目标应用程序所占用的内存持续增加。
8.一种终端设备,其特征在于,所述终端设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至5中任意一项所述终端设备控制方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1至5中任意一项所述终端设备控制方法的步骤。
CN201710698674.7A 2017-08-15 2017-08-15 终端设备控制方法及装置、终端设备及计算机可读存储介质 Active CN108228449B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710698674.7A CN108228449B (zh) 2017-08-15 2017-08-15 终端设备控制方法及装置、终端设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710698674.7A CN108228449B (zh) 2017-08-15 2017-08-15 终端设备控制方法及装置、终端设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN108228449A CN108228449A (zh) 2018-06-29
CN108228449B true CN108228449B (zh) 2021-02-19

Family

ID=62654573

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710698674.7A Active CN108228449B (zh) 2017-08-15 2017-08-15 终端设备控制方法及装置、终端设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN108228449B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752851B (zh) * 2019-03-27 2023-08-18 厦门网宿有限公司 一种内存回收方法及装置
CN110704189A (zh) * 2019-09-27 2020-01-17 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN112835689B (zh) * 2019-11-25 2024-07-26 航天信息股份有限公司 一种控制应用进程的方法及装置
CN112416574A (zh) * 2020-10-30 2021-02-26 北京小米移动软件有限公司 一种确定应用占用内存的方法、装置及存储介质
CN112463374A (zh) * 2020-11-26 2021-03-09 中国第一汽车股份有限公司 一种内存管理方法、装置、设备及存储介质
CN115905032A (zh) * 2021-08-20 2023-04-04 深圳市江波龙电子股份有限公司 存储设备及其数据回收方法、控制设备及可读存储介质
CN116089319B (zh) * 2022-08-30 2023-10-31 荣耀终端有限公司 内存处理方法及相关装置
CN115543864A (zh) * 2022-09-30 2022-12-30 荣耀终端有限公司 一种内存垃圾的回收方法及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833512A (zh) * 2010-04-22 2010-09-15 中兴通讯股份有限公司 一种内存回收方法及其装置
CN103324575A (zh) * 2012-03-23 2013-09-25 腾讯科技(深圳)有限公司 清理内存的方法和移动终端
CN103593298A (zh) * 2013-10-16 2014-02-19 北京航空航天大学 内存回收方法和装置
CN105159777A (zh) * 2015-08-03 2015-12-16 中科创达软件股份有限公司 进程的内存回收方法及装置
CN105446814A (zh) * 2014-09-30 2016-03-30 青岛海信移动通信技术股份有限公司 一种缓存回收方法和装置
CN105760228A (zh) * 2016-01-29 2016-07-13 珠海汇迪科技有限公司 低内存安卓设备下提高游戏流畅度的方法
CN106844159A (zh) * 2017-02-03 2017-06-13 广东欧珀移动通信有限公司 一种信息获取方法、装置及智能终端

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7925925B2 (en) * 2008-12-30 2011-04-12 Intel Corporation Delta checkpoints for a non-volatile memory indirection table

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833512A (zh) * 2010-04-22 2010-09-15 中兴通讯股份有限公司 一种内存回收方法及其装置
CN103324575A (zh) * 2012-03-23 2013-09-25 腾讯科技(深圳)有限公司 清理内存的方法和移动终端
CN103593298A (zh) * 2013-10-16 2014-02-19 北京航空航天大学 内存回收方法和装置
CN105446814A (zh) * 2014-09-30 2016-03-30 青岛海信移动通信技术股份有限公司 一种缓存回收方法和装置
CN105159777A (zh) * 2015-08-03 2015-12-16 中科创达软件股份有限公司 进程的内存回收方法及装置
CN105760228A (zh) * 2016-01-29 2016-07-13 珠海汇迪科技有限公司 低内存安卓设备下提高游戏流畅度的方法
CN106844159A (zh) * 2017-02-03 2017-06-13 广东欧珀移动通信有限公司 一种信息获取方法、装置及智能终端

Also Published As

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

Similar Documents

Publication Publication Date Title
CN108228449B (zh) 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN108228341B (zh) 内存回收方法及装置、终端设备及计算机可读存储介质
CN108205471B (zh) 内存回收方法及装置、计算机装置及计算机可读存储介质
US20180173620A1 (en) Data erasure method for solid state drive, and apparatus
CN108205498B (zh) 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108205501B (zh) 内存回收方法及装置、计算机装置及计算机可读存储介质
US10296264B2 (en) Automatic I/O stream selection for storage devices
CN109753443B (zh) 一种数据处理方法、装置及电子设备
CN108776614B (zh) 存储块的回收方法和装置
CN111324303B (zh) Ssd垃圾回收方法、装置、计算机设备及存储介质
CN108205474B (zh) 内存管理方法、终端设备、计算机装置以及可读存储介质
CN104239225A (zh) 一种管理异构混合内存的方法及装置
CN108287760B (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
CN113392037B (zh) 内存回收方法、装置、计算机设备和存储介质
CN109491606B (zh) 一种全闪存储空间管理方法、系统、设备及计算机介质
CN108228340B (zh) 终端控制方法及装置、终端设备及计算机可读存储介质
CN108287761B (zh) 内存回收方法及装置、终端设备及计算机可读存储介质
CN108228342B (zh) 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN115495025A (zh) 一种管理异常存储块的方法和装置
CN111984413A (zh) 内存回收方法、装置、电子设备及存储介质
CN115421907A (zh) 内存回收方法、装置、电子设备及存储介质
CN104375944A (zh) 一种数据存储方法和装置
CN117492662B (zh) 预读取的确定方法和装置、存储介质及电子设备
CN108228472B (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
TR01 Transfer of patent right

Effective date of registration: 20240624

Address after: 430000, 14th floor, No. 181 Chunxiao Road, Wuhan Economic and Technological Development Zone, Hubei Province

Patentee after: Wuhan Xingji Meizu Technology Co.,Ltd.

Country or region after: China

Address before: 519080 Meizu Science and Technology Building, Zhuhai City, Guangdong Province

Patentee before: MEIZU TECHNOLOGY Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right