CN105138402A - 一种应用进程内存释放的优先级调整方法及装置 - Google Patents
一种应用进程内存释放的优先级调整方法及装置 Download PDFInfo
- Publication number
- CN105138402A CN105138402A CN201510526508.XA CN201510526508A CN105138402A CN 105138402 A CN105138402 A CN 105138402A CN 201510526508 A CN201510526508 A CN 201510526508A CN 105138402 A CN105138402 A CN 105138402A
- Authority
- CN
- China
- Prior art keywords
- application process
- window
- priority
- internal memory
- variable condition
- 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
- 238000000034 method Methods 0.000 title claims abstract description 371
- 230000008569 process Effects 0.000 title claims abstract description 339
- 230000000694 effects Effects 0.000 claims abstract description 44
- 230000008034 disappearance Effects 0.000 claims description 13
- 238000012544 monitoring process Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 abstract description 9
- 230000003993 interaction Effects 0.000 description 6
- 208000019901 Anxiety disease Diseases 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000036506 anxiety Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
本发明的实施例提供一种应用进程内存释放的优先级调整方法及装置,涉及嵌入式计算机软件技术领域,能够实现对非Activity界面的应用进程内存释放的优先级进行调整。该方法包括:根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window,其中所述应用进程为非Activity界面的应用进程;根据所述window的变化状态设置所述应用进程的优先级,以便根据所述应用进程的优先级进行内存释放。本发明的实施例用于优先级调整。
Description
技术领域
本发明的实施例涉及嵌入式计算机软件技术领域,尤其涉及一种应用进程内存释放的优先级调整方法及装置。
背景技术
嵌入式计算机系统的硬件资源比较有限,特别是运行时内存(英文简称:RAM,英文全称:Random-AccessMemory)一般不会太大,嵌入式软件一般会对内存使用进行优化,尽量减少内存占用加快内存释放,但是当运行的程序较多时系统内存资源仍然会紧张。部分嵌入式产品的软件中会对内存进行实时压缩,有的还会启动磁盘缓存,但是考虑到内存压缩占用处理器资源导致软件运行速度变慢,以及磁盘缓存频繁读写影响嵌入式存储芯片寿命,这两种方法未得到广泛应用。嵌入式软件操作系统一般采用专门的内存资源释放算法,在后台统计进程的使用频率、重要程度和用户交互程度,为每个进程计算出一个内存释放的优先级的数值,当系统总内存低于阈值时将优先级的数值最低的应用进程选择性地杀死或关闭,释放进程占用的内存使系统总内存恢复到阈值之上。
Android系统的应用以四大组件为单位组成,包括Activity(活动界面)、Service(后台服务)、Contentprovider(数据提供器)和Broadcastreceiver(广播接收器)。Android系统根据上述组件与用户的交互程度动态调节其应用进程的优先级,确保交互程度高的应用进程有较高的进程优先级,在内存不足时首先杀死非活动状态和后台进程,尽量不影响用户的前台交互。
上述的内存释放方法对于标准的由四大组件实现的应用程序能起到很好的效果。但是,其仅仅考虑到了可见交互界面使用Activity时的场景,实际上有一些应用进程会使用其他非Activity的方法来实现界面,这将可能导致这些应用进程优先级过低,虽然在前台交互仍然会被杀死。例如在当前的部分智能电视中的电视设置、画中画和语音助手等应用。在一种现有技术中电视设置应用使用浮动层界面直接添加和显示界面控件,原因是如果其用Activity,那么该Activity显示时会遮挡用户正在使用的Activity,使其进入暂停状态(生命周期onPause()),很多视频应用程序在该状态时会停止视频播放,不仅影响用户体验,而且电视设置中的图像设置选项也无法实时看到调节效果。画中画应用显示一个小窗口播放用户选定的画中画子通道信号源或视频,该窗口要常驻在屏幕上不受应用程序Activity切换的影响,因此使用浮动层界面直接添加和显示界面控件。语音助手应用在响应用户的语音搜索或语音命令时,会在屏幕上显示一个对话框,该界面也不是Activity。用户能使用到的类似应用程序会有很多,例如360助手、腾讯手机管家等基于悬浮窗的置顶界面应用。
开发人员为了保证这类非Activity界面的应用在前台显示时不因为内存紧张而被内存释放器杀死,一般会在程序编译时强制指定其进程为高优先级。例如,在应用程序配置文件AndroidManifest.xml中指定persistent(常驻)属性,这样应用程序就可以获得系统核心进程优先级。然而,若不添加常驻属性,非Activity界面的应用会有前台运行时被杀死的风险,添加后又会影响系统的运行效率和内存资源,这种常驻属性的应用会一直占用内存,即使该应用处于非活动状态未在前台显示时也无法被操作系统释放内存,使系统总的可用内存减少,增加了系统内存紧张的概率,不适用于低内存的嵌入式系统。综上所述,没有一种技术能够实现在对非Activity界面的应用进程的优先级进行调整的方法,以避免非Activity界面的应用在前台显示时因为内存紧张而被内存释放器杀死,或者将非Activity界面的应用进程的优先级设置为常驻属性时造成的对系统内存资源的浪费。
发明内容
本发明的实施例提供一种应用进程内存释放的优先级调整方法及装置,能够实现对非Activity界面的应用进程内存释放的优先级进行调整。
第一方面,提供一种应用进程内存释放的优先级调整方法,包括:
根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window,其中所述应用进程为非Activity界面的应用进程;
根据所述window的变化状态设置所述应用进程内存释放的优先级,以便根据所述优先级进行内存释放。
第二方面,提供一种应用进程内存释放的优先级调整装置,包括:
监听单元,用于根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window,其中所述应用进程为非Activity界面的应用进程;
调整单元,用于根据所述window的变化状态设置所述应用进程内存释放的优先级,以便根据所述优先级进行内存释放。
本发明的实施例提供的应用进程内存释放的优先级调整方法及装置,由于在Android系统中应用进程的软件界面在操作系统显示框架服务内部可以由多层window和多个window组成,而本申请提供的方案能够根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window;从而根据window的变化状态设置应用进程内存释放的优先级,具体当window的状态发生变化时,可以根据window的变化状态提高或降低该应用进程内存释放的优先级,以便操作系统根据该应用进程内存释放的优先级按照标准的内存释放算法杀死低优先级的应用进程已释放内容,在上述过程中通过本申请提供的方案实现了对非Activity界面的应用进程内存释放的优先级进行调整。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的实施例提供的一种应用进程内存释放的优先级调整方法的流程示意图;
图2为本发明的另一实施例提供的一种应用进程内存释放的优先级调整方法的流程示意图;
图3为本发明的实施例提供的一种应用进程内存释放的优先级调整装置的结构示意图;
图4为本发明的另一实施例提供的一种应用进程内存释放的优先级调整装置的结构示意图;
图5为本发明的又一实施例提供的一种应用进程内存释放的优先级调整装置的结构示意图;
图6为本发明的再一实施例提供的一种应用进程内存释放的优先级调整装置的结构示意图;
图7为本发明的另一实施例提供的一种应用进程内存释放的优先级调整装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实施例提供一种应用进程内存释放的优先级调整方法,参照图1所示,包括如下步骤:
101、根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window。
其中,步骤101中提到的应用进程为非Activity界面的应用进程;非Activity界面的应用进程只占全部应用进程的一部分,因此在执行步骤101之前必须先确定哪些应用进程为非Activity界面的应用进程,避免对全部应用进程进行处理降低效率,具体的,操作系统中使用应用进程名称字符串来唯一标识应用进程,因此在产品预置的应用程序中可以通过应用进程名称字符串区分此类进程。
102、根据window的变化状态设置应用进程内存释放的优先级,以便根据该优先级进行内存释放。
对于在Android系统的应用进程管理和显示管理框架,以及各种显示控件的实现上,Android系统的任意软件界面(包括Activity、对话框、浮动层界面等等)最终都基于操作系统显示管理框架服务内部的window,它是Android显示和管理界面的底层组织单元,实现细节封装在操作系统框架级代码内部并未向应用软件公开。软件界面可以由多层window和多个window组成,每一window层级可以添加若干子层和子window。Activity、对话框等界面控件的代码内部实现了对其window的创建和管理,动态添加的浮动层界面在添加或移除时会由操作系统显示管理框架服务为其创建和管理window。当软件界面显示时,在操作系统显示管理框架服务内部首先会创建出一个或多个window,然后在window上添加界面控件同时设置界面控件的可见性为可见(Visible)完成界面显示;软件界面消失时,会在window上移除界面控件,或者,直接设置界面控件的可见性为不可见(Invisible)或消失(Gone)。由此,监控应用进程是否可见就可以转化为监控应用进程对应在显示管理框架服务内部的所属全部window的可见性变化。当出现某个应用进程对应可见window时,判断该应用进程可见,提高该应用进程内存释放的优先级为前台进程级别,保证内存释放器不会在内存紧张时将其杀死;当某个应用进程对应的所有window都变为不可见或消失时,判断应用进程不可见,恢复其可见之前对应的内存释放的优先级,交由操作系统按照标准的内存释放算法进行处理,此时该应用进程不再与用户交互,可以被杀死释放内存。
本发明的实施例提供的应用进程内存释放的优先级调整方法,由于在Android系统中应用进程的软件界面在操作系统显示框架服务内部可以由多层window和多个window组成,而本申请提供的方案能够根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window;从而根据window的变化状态设置应用进程内存释放的优先级,具体当window的状态发生变化时,可以根据window的变化状态提高或降低该应用进程内存释放的优先级,以便操作系统根据该应用进程内存释放的优先级按照标准的内存释放算法杀死低优先级的应用进程已释放内容,在上述过程中通过本申请提供的方案实现了对非Activity界面的应用进程内存释放的优先级进行调整。
具体的本申请的另一种实施例提供一种应用进程内存释放的优先级调整方法,参照图2所示,包括如下步骤:
201、生成应用进程列表,应用进程列表用于存储应用进程的名称。
在步骤201中,使用应用进程列表保存应用进程的名称,具体的可以采用该应用进程列表保存多个非Activity界面应用进程的应用进程名称字符串。
其中,在本申请的实施例还提供了在该应用进程列表中配置应用进程的名称的三种方式:
方式一:根据预配置文件在应用进程列表中添加应用进程名称。
在产品预置的应用程序中,各个应用的开发人员预先知道其应用是否使用了非Activity界面,并在产品中预置配置文件填写各个非Activity界面应用进程的应用进程名称,用来生成系统运行时的对应应用进程列表内容。
方式二:根据注册请求在应用进程列表中添加待注册的应用进程名称,其中注册请求中包含待注册的应用进程的应用进程名称。
方式三:根据注销请求在应用进程列表中删除待注销的应用进程名称,其中注册请求中包含待注销的应用进程的应用进程名称。
考虑到用户自行安装的应用程序无法在产品出厂时的配置文件中预先设定,本方法为各个应用程序设置动态注册和动态注销的机制,应用程序将其进程名称通过注册请求或注销请求报告给进程列表管理单元以在应用进程列表添加或注销需要调节优先级的应用进程。动态注册和注销机制可以使用操作系统的已有跨进程通信方法,例如,Android系统中的广播,其按照action(形式为字符串,定义广播格式)内容跨进程匹配注册同一action的广播接收器目标进程,接收的广播信息中携带附加数据,包含应用进程名称字符串。当然,该过程可以添加权限验证环节,拥有相应权限的应用进程的注册或注销请求才被允许处理。
具体的,系统启动后,首先在内存中生成一个空白的应用进程列表用来存放应用进程的名称;然后,查看其存储单元中是否有数据(上次系统运行时记录的应用进程列表会保存在存储单元上)。如果存储单元有数据则添加数据中的多个应用进程名称到应用进程列表中;如果没有数据,则代表系统第一次启动或者数据被清空(例如用户选择整机恢复出厂设置、清空程序数据等等),此时读取前述的预置配置文件将多个应用进程名称添加到列表中。
在系统运行时,应用程序可以动态地向应用进程列表的管理单元跨进程发起注册请求或注销请求,应用进程列表的管理单元通过请求处理器收到请求,验证权限后将请求信息中的应用进程名称提取出来,如果为注册过程,则将进程名称添加到应用进程列表中,如果为注销过程,则将其从应用进程列表中移除。应用进程列表数据如果有改动,会立即保存列表中的所有应用进程名称字符串到存储单元,供下次系统启动时加载。
202、获取应用进程管理对象,应用进程管理对象包含应用进程名称与其对应的优先级。
应用进程的启动由操作系统应用进程管理框架服务负责,每个应用进程会有一个对应的进程管理对象,其中包含了应用进程名称、应用进程内存释放的优先级等多个属性值。示例性的,当应用进程对应的Window从不可见变为可见时,提高其应用进程内存释放的优先级的数值;当Window从可见变为不可见时,应用进程内存释放的优先级需要恢复到调整前的数值。每个应用进程可能会对应不同的优先级数值。其中,系统总内存不足时,Android系统的内存释放算法会为每个应用进程计算出一个oom_adj数值(即应用进程内存释放的优先级,该数字越小代表越重要,被杀死的可能性越低,其中该数值相同时先杀死内存占用多的应用进程),将数值交给内存释放器(LowMemoryKiller),由其统计后执行杀死进程回收内存的操作。应用进程内存释放的优先级根据应用进程与用户交互状态由Android系统的应用进程管理框架服务动态设置,其按照重要性从高到低依次分为:
1)系统核心进程(System和Coreserver):系统核心进程,永远不会被内存释放器杀死。
2)前台进程(Foreground):屏幕上正在显示Activity的应用进程。
3)可见进程(Visible):应用Activity可见但不是前台Activity,例如被弹出对话框或半透明Activity遮挡的下层Activity。
4)可感知进程(Perceptible):应用无可见Activity但是可以被用户感知到,例如正在后台播放音乐的进程。
5)服务进程(Service):应用无可见Activity但是有后台服务。
6)前一进程(Previous):用户前一个运行过的Activity对应的应用进程,用户有可能会直接切换回去,因此优先级略高
7)缓存进程(Cached):曾经运行过的Activity的应用进程,内存不足时可能较早被杀死。
当然,以上只是举例说明,还有一些不常用的应用进程优先级,如Backup(备份进程)、Home(桌面或应用启动器)、Heavyweight等。
203、获取应用进程对应当前的优先级以及应用进程在操作系统显示框架服务内部的窗口Window的变化状态;其中window的变化状态包括:window的界面的添加、消失和可见性。
应用进程内存释放的优先级的调整通过优先级调整单元实施,该过程需要读取和修改优先级数值,因此其必须能够获得应用进程管理对象的引用来进行读写操作。优先级调整单元启动后会向操作系统应用进程管理框架服务添加监听器,当某个应用进程被启动时监听器会将该应用进程的应用进程管理对象的引用回传给优先级调整单元。优先级调整单元读取进程列表管理单元的应用进程列表判断启动的进程是否为应用进程列表中的应用进程(即是否为非Activity界面应用进程),如果不是目标进程则不进行操作,如果是则以应用进程的名称字符串为键(Key)对象,创建一个优先级管理对象(其中了包含进程管理对象的引用)作为值(Value)对象添加到应用进程内存释放的优先级管理集合中,集合中以键值对形式存储多组数据,可以用键对象查询或取出值对象。优先级调整单元作为应用进程管理框架服务的内部插件一起工作,对应用进程管理对象有读写权限,可以直接改写其内部的应用进程内存释放的优先级的数值。
如前文所述,应用显示界面时,各种界面显示方式最终都会在操作系统显示管理框架服务中操作window,本实施例中具体通过监听window添加、消失和可见性变化事件统计某个应用进程window的数量和每个window的可见性,从而判断应用进程是否可见。
window是否可见可以由回调通知中的window界面可见性属性值和window移除发生标志位综合判断,如下表1所示。Window移除发生标志位为true判断window不可见;为false时,还需要结合window中界面控件可见性属性值判断,界面控件可见而且移除发生标志为false时判断window可见,界面控件不可见或消失而且移除发生标志为false时判断window不可见。
表1、window可见性判断
204、根据window的变化状态重新设置应用进程对应的当前的优先级。
步骤204为动态修改应用进程内存释放的优先级属性的过程,window的界面的添加、消失和可见性变化,对应到操作系统显示管理框架服务内部对应用进程所属多个window的添加、移除和重新布局。
window的变化状态为:window的界面的添加时;步骤204具体为:根据window的变化状态调高应用进程内存释放的优先级;
window的变化状态为:window的界面的消失时;步骤204具体为:根据window的变化状态调低应用进程内存释放的优先级;
window的变化状态为:window的界面的可见性从不可见变为可见时;步骤204具体为:根据window的变化状态调高应用进程内存释放的优先级;
window的变化状态为:window的界面的可见性从可见变为不可见时;步骤204具体为:根据window的变化状态调低应用进程内存释放的优先级。
示例性的,当应用界面显示时,会对应有一到多个window添加,或者,应用界面从不可见变为可见会引发window的重新布局,window中界面控件可见性属性值被设置为可见;当应用界面变为不可见时,有时会对应地移除window,有时会引发window重新布局使window中界面控件可见性属性值变为不可见或消失。
进程优先级调整单元在操作系统显示管理框架服务中添加了监听器用来监听window变化,当window被添加、移除或者重新布局而且其中界面控件可见性发生变化时会发送通知回调。其中包含window对应界面的应用进程名称、window标识码、window界面控件可见性属性值和window移除发生标志位。Window标识码由监听器根据window状态对象在内存中的地址计算得到哈希值,同一内存地址仅会对应一个对象因此该哈希值唯一。
进程优先级调整单元收到通知回调后,按如下步骤处理:
1)查询应用进程列表(由前文的201流程生成),如果应用进程名称不在列表中就认为此应用进程不需要对内存释放的优先级调整,并结束操作,如果在列表中进入下一步。
2)从应用进程内存释放的优先级管理集合(由前文的202、203步流程生成)中找到该应用进程名称作为键的应用进程管理对象。应用进程管理对象内部包含之前保存的进程管理对象的引用、进程优先级初始数值以及一个window可见性集合。window可见性集合中的键值对以window标识码作为键,以window界面控件可见性属性值作为值。
3)遍历window可见性集合中的键值对,判断通知回调发生前是否有可见window。值对象的window界面控件可见性属性值为可见时认为该window可见,该值为不可见或消失时认为该window不可见。
4)当通知回调的window移除发生标志位为true时,认为该window变为不可见,从window可见性集合中移除以window标识码作为键的键值对。
其中,直接移除键值对而不是更新数值的原因是,该window已经不再被使用,其内存会被释放,由对象内存地址计算得到的window标识码成为无效值。
5)将通知回调中的window标识码作为键,将window界面控件可见性属性值作为值组成一个键值对存入window可见性集合,如果集合中已经有同样window标识码作为键的键值对,则更新其值对象。
6)遍历window可见性集合中的键值对,判断通知回调发生后是否有可见window。
7)根据通知回调发生前与发生后是否发生可见window的变化来设置应用进程内存释放的优先级。
如果未发生变化,则结束操作。
如果从没有可见window变为有可见window,则认为应用进程在前台显示需要提高应用进程内存释放的优先级。首先,通过进程管理对象的引用来读取该应用进程对应的当前优先级的数值,该数值如果低于前台应用进程内存释放的优先级的数值则将其保留到应用进程内存释放的优先级的初始数值中,留待恢复时使用,由于前述的优先级分类,每个应用进程可能对应不同的优先级,因此,不能使用同一个数值来恢复优先级。本发明的实施例公开的方法,能够避免操作系统的应用进程管理框架误将非Activity界面应用进程当作非前台交互的普通应用进程,从而根据进程中组件类型和功能设置一个应用进程内存释放的优先级的数值。然后,修改进程管理对象中优先级的数值,设置为前台进程优先级。
如果从有可见window变为没有可见window,则认为应用进程前台界面消失,需要恢复其不可见时对应的应用进程内存释放的优先级。此时读取之前通知回调发生时保存的应用进程内存释放的优先级的初始数值,通过进程管理对象的引用将该数值设置为应用进程内存释放的优先级。然后,应用进程内存释放的优先级的初始数值设置为未知值,下次进程window可见性变化回调中会再读取并写入有效值。
操作系统内存释放器发现系统总的剩余内存低于阈值时,会根据各个应用进程内存释放的优先级的数值,先杀死最低优先级对应的应用进程释放内存,如果剩余内存仍然低于阈值时会进一步杀死次低优先级对应的应用进程,如此逐级判断和杀死应用进程释放内存。本方法将非Activity界面显示时的应用进程与前台应用进程内存释放的优先级相统一,使其基本不会在内存紧张时被杀死,保证了用户交互时界面不因应用进程被杀死而消失;当该应用进程界面自行消失后,本方法恢复操作系统为其设置的初始应用进程内存释放的优先级,交由标准的内存释放方法进行判断处理,保证系统对内存的正常管理。
参照图3所示,本发明的实施例提供一种应用进程内存释放的优先级调整装置,用于实施上述的应用进程内存释放的优先级调整方法,包括:
监听单元31,用于根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window,其中应用进程为非Activity界面的应用进程。
调整单元32,用于根据window的变化状态设置应用进程内存释放的优先级,以便根据优先级进行内存释放。
本发明的实施例提供的应用进程内存释放的优先级调整装置,由于在Android系统中应用进程的软件界面在操作系统显示框架服务内部可以由多层window和多个window组成,而本申请提供的方案能够根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window;从而根据window的变化状态设置应用进程内存释放的优先级,具体当window的状态发生变化时,可以根据window的变化状态提高或降低该应用进程内存释放的优先级,以便操作系统根据该应用进程内存释放的优先级按照标准的内存释放算法杀死低优先级的应用进程已释放内容,在上述过程中通过本申请提供的方案实现了对非Activity界面的应用进程内存释放的优先级进行调整。
一种可选的方案为,监听单元31具体用于获取应用进程管理对象,应用进程管理对象包含应用进程名称与其对应的优先级;获取应用进程对应的当前的优先级以及应用进程在操作系统显示框架服务内部的窗口Window的变化状态;其中window的变化状态包括:window的界面的添加、消失和可见性。进一步的,window的变化状态为:window的界面的添加时;调整单元32具体用于根据window的变化状态调高应用进程内存释放的优先级;
或者,window的变化状态为:window的界面的消失时;调整单元32具体用于根据window的变化状态调低应用进程内存释放的优先级;
或者,window的变化状态为:window的界面的可见性从不可见变为可见时;调整单元32具体用于根据window的变化状态调高应用进程内存释放的优先级;
或者,window的变化状态为:window的界面的可见性从可见变为不可见时;调整单元32具体用于根据window的变化状态调低应用进程内存释放的优先级。
参照图4所示,本发明的实施例提供一种优选方案中,应用进程内存释放的优先级调整装置还包括:
初始化单元33,用于生成应用进程列表,应用进程列表用于存储应用进程的名称。
进一步的,参照图5所示,应用进程内存释放的优先级调整装置还包括:配置单元34,用于根据预置配置文件在应用进程列表中添加应用进程名称。
可选的,参照图6所示,应用进程内存释放的优先级调整装置还包括:注册单元35,用于根据注册请求在应用进程列表中添加待注册的应用进程名称,其中注册请求中包含待注册的应用进程名称。
可选的,参照图7所示,应用进程内存释放的优先级调整装置还包括:
注销单元36,用于根据注销请求在应用进程列表中删除待注销的应用进程名称,其中注册请求中包含待注销的应用进程名称。
其中,需要说明的是,本实施例中的各个单元可以为单独设立的处理器,也可以集成在某一个处理器中实现,此外,也可以以程序代码的形式存储于基站的存储器中,由处理器调用并执行以上各个单元的功能。这里所述的处理器可以是一个中央处理器(英文全称:CentralProcessingUnit,英文简称:CPU),或者是特定集成电路(英文全称:ApplicationSpecificIntegratedCircuit,英文简称:ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种应用进程内存释放的优先级调整方法,其特征在于,包括:
根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window,其中所述应用进程为非Activity界面的应用进程;
根据所述window的变化状态设置所述应用进程内存释放的优先级,以便根据所述优先级进行内存释放。
2.根据权利要求1所述的方法,其特征在于,根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window;包括:
获取应用进程管理对象,所述应用进程管理对象包含应用进程名称与其对应的优先级;
获取所述应用进程对应的当前的优先级以及所述应用进程在操作系统显示框架服务内部的窗口Window的变化状态;其中所述window的变化状态包括:window的界面的添加、消失和可见性。
3.根据权利要求2所述的方法,其特征在于,
所述window的变化状态为:window的界面的添加时;根据所述window的变化状态设置所述应用进程内存释放的优先级包括:根据所述window的变化状态调高所述应用进程内存释放的优先级;
所述window的变化状态为:window的界面的消失时;根据所述window的变化状态设置所述应用进程内存释放的优先级包括:根据所述window的变化状态调低所述应用进程内存释放的优先级;
所述window的变化状态为:window的界面的可见性从不可见变为可见时;根据所述window的变化状态设置所述应用进程内存释放的优先级包括:根据所述window的变化状态调高所述应用进程内存释放的优先级;
所述window的变化状态为:window的界面的可见性从可见变为不可见时;根据所述window的变化状态设置所述应用进程内存释放的优先级包括:根据所述window的变化状态调低所述应用进程内存释放的优先级。
4.根据权利要求1所述的方法,其特征在于,所述监听应用进程在操作系统显示框架服务内部的窗口Window前,所述方法还包括:
生成应用进程列表,所述应用进程列表用于存储所述应用进程的名称。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
根据预置配置文件在所述应用进程列表中添加应用进程名称。
6.一种应用进程内存释放的优先级调整装置,其特征在于,包括:
监听单元,用于根据应用进程的名称监听应用进程在操作系统显示框架服务内部的窗口Window,其中所述应用进程为非Activity界面的应用进程;
调整单元,用于根据所述window的变化状态设置所述应用进程内存释放的优先级,以便根据所述优先级进行内存释放。
7.根据权利要求6所述的装置,其特征在于,所述监听单元具体用于获取应用进程管理对象,所述应用进程管理对象包含应用进程名称与其对应的优先级;获取所述应用进程对应的当前的优先级以及所述应用进程在操作系统显示框架服务内部的窗口Window的变化状态;其中所述window的变化状态包括:window的界面的添加、消失和可见性。
8.根据权利要求7所述的装置,其特征在于,
所述window的变化状态为:window的界面的添加时;所述调整单元具体用于根据所述window的变化状态调高所述应用进程内存释放的优先级;
所述window的变化状态为:window的界面的消失时;所述调整单元具体用于根据所述window的变化状态调低所述应用进程内存释放的优先级;
所述window的变化状态为:window的界面的可见性从不可见变为可见时;所述调整单元具体用于根据所述window的变化状态调高所述应用进程内存释放的优先级;
所述window的变化状态为:window的界面的可见性从可见变为不可见时;所述调整单元具体用于根据所述window的变化状态调低所述应用进程内存释放的优先级。
9.根据权利要求6所述的装置,其特征在于,还包括:
初始化单元,用于生成应用进程列表,所述应用进程列表用于存储所述应用进程的名称。
10.根据权利要求9所述的装置,其特征在于,还包括:
配置单元根据预置配置文件在所述应用进程列表中添加应用进程名称。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510526508.XA CN105138402B (zh) | 2015-08-25 | 2015-08-25 | 一种应用进程内存释放的优先级调整方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510526508.XA CN105138402B (zh) | 2015-08-25 | 2015-08-25 | 一种应用进程内存释放的优先级调整方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138402A true CN105138402A (zh) | 2015-12-09 |
CN105138402B CN105138402B (zh) | 2019-02-15 |
Family
ID=54723758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510526508.XA Expired - Fee Related CN105138402B (zh) | 2015-08-25 | 2015-08-25 | 一种应用进程内存释放的优先级调整方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105138402B (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808447A (zh) * | 2016-03-29 | 2016-07-27 | 海信集团有限公司 | 一种终端设备的内存回收方法和装置 |
CN106020973A (zh) * | 2016-05-10 | 2016-10-12 | 广东睿江云计算股份有限公司 | 云主机系统中的cpu调度方法及装置 |
CN106055392A (zh) * | 2016-05-20 | 2016-10-26 | 维沃移动通信有限公司 | 应用进入后台后的处理方法、测试方法及终端 |
CN106354562A (zh) * | 2016-08-25 | 2017-01-25 | 上海传英信息技术有限公司 | 内存清理系统和内存清理方法 |
CN106648855A (zh) * | 2016-11-21 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 对终端的应用程序进行控制的方法及装置 |
CN107239394A (zh) * | 2016-03-29 | 2017-10-10 | 卓望数码技术(深圳)有限公司 | 一种安卓应用的内存泄露检测方法及装置 |
CN107450709A (zh) * | 2017-07-31 | 2017-12-08 | 广东欧珀移动通信有限公司 | 应用处理方法、装置、存储介质及电子设备 |
CN107643951A (zh) * | 2017-09-29 | 2018-01-30 | 北京金山安全软件有限公司 | 进程处理方法、装置及电子设备 |
CN107688497A (zh) * | 2017-07-25 | 2018-02-13 | 努比亚技术有限公司 | 一种内存调控方法、设备及计算机可读存储介质 |
CN109614176A (zh) * | 2018-10-30 | 2019-04-12 | 努比亚技术有限公司 | 一种应用界面布局方法、终端及计算机可读存储介质 |
CN109669877A (zh) * | 2018-12-11 | 2019-04-23 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置、终端及存储介质 |
CN109710415A (zh) * | 2018-12-29 | 2019-05-03 | 乐蜜有限公司 | 调用弹窗控件的处理方法、装置及电子设备 |
CN109947571A (zh) * | 2019-03-22 | 2019-06-28 | 北京奇艺世纪科技有限公司 | 一种内存释放方法及系统 |
WO2019128573A1 (zh) * | 2017-12-29 | 2019-07-04 | Oppo广东移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
CN110708579A (zh) * | 2016-08-04 | 2020-01-17 | 联咏科技股份有限公司 | 可执行视频播放的电子装置 |
CN110928703A (zh) * | 2018-09-20 | 2020-03-27 | 北京君正集成电路股份有限公司 | 多进程通讯注册方法和装置 |
CN111008079A (zh) * | 2019-12-10 | 2020-04-14 | Oppo(重庆)智能科技有限公司 | 进程管理方法、装置、存储介质及电子设备 |
CN111198759A (zh) * | 2018-11-16 | 2020-05-26 | 深圳市优必选科技有限公司 | 一种内存优化方法、系统、终端设备及可读存储介质 |
CN111290843A (zh) * | 2019-05-10 | 2020-06-16 | 展讯半导体(南京)有限公司 | 进程管理方法及装置 |
CN111736928A (zh) * | 2020-06-22 | 2020-10-02 | Oppo(重庆)智能科技有限公司 | 一种画中画模式启动方法、装置及计算机可读存储介质 |
WO2021087814A1 (zh) * | 2019-11-06 | 2021-05-14 | 深圳市欢太科技有限公司 | 进程优先级控制方法、装置、电子设备及存储介质 |
CN113806694A (zh) * | 2020-06-12 | 2021-12-17 | 北京小米移动软件有限公司 | 一种保护用户隐私信息的方法、装置及介质 |
CN113986543A (zh) * | 2021-10-27 | 2022-01-28 | 深圳小湃科技有限公司 | 内存释放方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902359A (zh) * | 2014-03-31 | 2014-07-02 | 深圳创维-Rgb电子有限公司 | 基于Android系统内存优化与应用调度方法及系统 |
CN104252389A (zh) * | 2013-06-27 | 2014-12-31 | 腾讯科技(深圳)有限公司 | 应用程序运行方法、系统及应用程序 |
CN104461746A (zh) * | 2014-12-30 | 2015-03-25 | 中科创达软件股份有限公司 | 一种基于Android系统的内存空间优化方法及系统 |
US20150121303A1 (en) * | 2013-10-31 | 2015-04-30 | Hisense Mobile Communications Technology Co., Ltd. | Method for starting activity of mobile terminal and the mobile terminal |
-
2015
- 2015-08-25 CN CN201510526508.XA patent/CN105138402B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252389A (zh) * | 2013-06-27 | 2014-12-31 | 腾讯科技(深圳)有限公司 | 应用程序运行方法、系统及应用程序 |
US20150121303A1 (en) * | 2013-10-31 | 2015-04-30 | Hisense Mobile Communications Technology Co., Ltd. | Method for starting activity of mobile terminal and the mobile terminal |
CN103902359A (zh) * | 2014-03-31 | 2014-07-02 | 深圳创维-Rgb电子有限公司 | 基于Android系统内存优化与应用调度方法及系统 |
CN104461746A (zh) * | 2014-12-30 | 2015-03-25 | 中科创达软件股份有限公司 | 一种基于Android系统的内存空间优化方法及系统 |
Non-Patent Citations (1)
Title |
---|
宋平波 等: "Android内存管理机制研究", 《移动通信》 * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239394A (zh) * | 2016-03-29 | 2017-10-10 | 卓望数码技术(深圳)有限公司 | 一种安卓应用的内存泄露检测方法及装置 |
CN105808447A (zh) * | 2016-03-29 | 2016-07-27 | 海信集团有限公司 | 一种终端设备的内存回收方法和装置 |
CN105808447B (zh) * | 2016-03-29 | 2019-01-29 | 海信集团有限公司 | 一种终端设备的内存回收方法和装置 |
CN106020973A (zh) * | 2016-05-10 | 2016-10-12 | 广东睿江云计算股份有限公司 | 云主机系统中的cpu调度方法及装置 |
CN106055392A (zh) * | 2016-05-20 | 2016-10-26 | 维沃移动通信有限公司 | 应用进入后台后的处理方法、测试方法及终端 |
CN106055392B (zh) * | 2016-05-20 | 2019-10-15 | 维沃移动通信有限公司 | 应用进入后台后的处理方法、测试方法及终端 |
CN110708579A (zh) * | 2016-08-04 | 2020-01-17 | 联咏科技股份有限公司 | 可执行视频播放的电子装置 |
CN106354562B (zh) * | 2016-08-25 | 2024-04-12 | 深圳市泰衡诺科技有限公司 | 内存清理系统和内存清理方法 |
CN106354562A (zh) * | 2016-08-25 | 2017-01-25 | 上海传英信息技术有限公司 | 内存清理系统和内存清理方法 |
CN106648855A (zh) * | 2016-11-21 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 对终端的应用程序进行控制的方法及装置 |
CN107688497A (zh) * | 2017-07-25 | 2018-02-13 | 努比亚技术有限公司 | 一种内存调控方法、设备及计算机可读存储介质 |
CN107688497B (zh) * | 2017-07-25 | 2021-09-14 | 努比亚技术有限公司 | 一种内存调控方法、设备及计算机可读存储介质 |
CN107450709B (zh) * | 2017-07-31 | 2019-09-24 | Oppo广东移动通信有限公司 | 应用处理方法、装置、存储介质及电子设备 |
CN107450709A (zh) * | 2017-07-31 | 2017-12-08 | 广东欧珀移动通信有限公司 | 应用处理方法、装置、存储介质及电子设备 |
CN107643951B (zh) * | 2017-09-29 | 2020-07-28 | 北京金山安全软件有限公司 | 进程处理方法、装置及电子设备 |
CN107643951A (zh) * | 2017-09-29 | 2018-01-30 | 北京金山安全软件有限公司 | 进程处理方法、装置及电子设备 |
WO2019128573A1 (zh) * | 2017-12-29 | 2019-07-04 | Oppo广东移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
CN110928703A (zh) * | 2018-09-20 | 2020-03-27 | 北京君正集成电路股份有限公司 | 多进程通讯注册方法和装置 |
CN110928703B (zh) * | 2018-09-20 | 2023-02-21 | 北京君正集成电路股份有限公司 | 多进程通讯注册方法和装置 |
CN109614176A (zh) * | 2018-10-30 | 2019-04-12 | 努比亚技术有限公司 | 一种应用界面布局方法、终端及计算机可读存储介质 |
CN109614176B (zh) * | 2018-10-30 | 2021-10-15 | 努比亚技术有限公司 | 一种应用界面布局方法、终端及计算机可读存储介质 |
CN111198759B (zh) * | 2018-11-16 | 2024-04-19 | 深圳市优必选科技有限公司 | 一种内存优化方法、系统、终端设备及可读存储介质 |
CN111198759A (zh) * | 2018-11-16 | 2020-05-26 | 深圳市优必选科技有限公司 | 一种内存优化方法、系统、终端设备及可读存储介质 |
CN109669877A (zh) * | 2018-12-11 | 2019-04-23 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置、终端及存储介质 |
CN109669877B (zh) * | 2018-12-11 | 2023-04-04 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置、终端及存储介质 |
CN109710415A (zh) * | 2018-12-29 | 2019-05-03 | 乐蜜有限公司 | 调用弹窗控件的处理方法、装置及电子设备 |
CN109710415B (zh) * | 2018-12-29 | 2023-10-03 | 卓米私人有限公司 | 调用弹窗控件的处理方法、装置及电子设备 |
CN109947571B (zh) * | 2019-03-22 | 2021-07-20 | 北京奇艺世纪科技有限公司 | 一种内存释放方法及系统 |
CN109947571A (zh) * | 2019-03-22 | 2019-06-28 | 北京奇艺世纪科技有限公司 | 一种内存释放方法及系统 |
CN111290843A (zh) * | 2019-05-10 | 2020-06-16 | 展讯半导体(南京)有限公司 | 进程管理方法及装置 |
WO2021087814A1 (zh) * | 2019-11-06 | 2021-05-14 | 深圳市欢太科技有限公司 | 进程优先级控制方法、装置、电子设备及存储介质 |
CN114303130A (zh) * | 2019-11-06 | 2022-04-08 | 深圳市欢太科技有限公司 | 进程优先级控制方法、装置、电子设备及存储介质 |
CN111008079B (zh) * | 2019-12-10 | 2022-10-21 | Oppo(重庆)智能科技有限公司 | 进程管理方法、装置、存储介质及电子设备 |
CN111008079A (zh) * | 2019-12-10 | 2020-04-14 | Oppo(重庆)智能科技有限公司 | 进程管理方法、装置、存储介质及电子设备 |
CN113806694A (zh) * | 2020-06-12 | 2021-12-17 | 北京小米移动软件有限公司 | 一种保护用户隐私信息的方法、装置及介质 |
CN111736928A (zh) * | 2020-06-22 | 2020-10-02 | Oppo(重庆)智能科技有限公司 | 一种画中画模式启动方法、装置及计算机可读存储介质 |
CN113986543A (zh) * | 2021-10-27 | 2022-01-28 | 深圳小湃科技有限公司 | 内存释放方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105138402B (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105138402A (zh) | 一种应用进程内存释放的优先级调整方法及装置 | |
US20210004181A1 (en) | Global de-duplication of virtual disks in a storage platform | |
CN102982141B (zh) | 一种实现分布式数据库代理的方法及装置 | |
US9424363B2 (en) | Dynamic tag management for optimizing content delivery | |
US9235464B2 (en) | Smart error recovery for database applications | |
RU2619181C2 (ru) | Система и способ для оптимизации передач загружаемого контента | |
US11630810B2 (en) | Systems and methods for tuning a storage system | |
US20130066890A1 (en) | Method and system for specifying, preparing and using parameterized database queries | |
US10795577B2 (en) | De-duplication of client-side data cache for virtual disks | |
CN105245523B (zh) | 应用于桌面虚拟化场景的存储服务平台及其实现方法 | |
CN111770157B (zh) | 一种业务处理方法、装置及电子设备和存储介质 | |
US20160004451A1 (en) | Storage system with virtual disks | |
US20120278344A1 (en) | Proximity grids for an in-memory data grid | |
CN102710763B (zh) | 一种分布式缓存池化、分片及故障转移的方法及系统 | |
US20080281959A1 (en) | Managing addition and removal of nodes in a network | |
CN106301865A (zh) | 应用于服务提供设备的数据处理方法和设备 | |
US20200142634A1 (en) | Hybrid distributed storage system to dynamically modify storage overhead and improve access performance | |
US20110161298A1 (en) | System and method for opportunistic re-imaging using cannibalistic storage techniques on sparse storage devices | |
CN107179878A (zh) | 基于应用优化的数据存储的方法和装置 | |
US20150142845A1 (en) | Smart database caching | |
CN103973725A (zh) | 一种分布式协同方法和协同器 | |
US20160048344A1 (en) | Distributed caching systems and methods | |
CN107040576A (zh) | 信息推送方法及装置、通讯系统 | |
US10289345B1 (en) | Contention and metadata write amplification reduction in log structured data storage mapping | |
CN101729848B (zh) | 基于机顶盒的游戏功能实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190215 |