CN109669733A - 一种终端设备内存管理的方法及装置 - Google Patents
一种终端设备内存管理的方法及装置 Download PDFInfo
- Publication number
- CN109669733A CN109669733A CN201710946427.4A CN201710946427A CN109669733A CN 109669733 A CN109669733 A CN 109669733A CN 201710946427 A CN201710946427 A CN 201710946427A CN 109669733 A CN109669733 A CN 109669733A
- Authority
- CN
- China
- Prior art keywords
- memory
- operating system
- terminal device
- currently available
- committed
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- 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
Abstract
本发明涉及计算机技术领域,尤其涉及一种终端设备内存管理的方法及装置,该方法为,在接收到内存加速指令的条件下,获取所述终端设备的操作系统当前可用内存;根据所述操作系统的当前可用内存,申请占用内存;其中,所述占用内存大小不超过所述当前可用内存大小;触发所述终端设备的操作系统的内存回收机制,用于释放所述操作系统的进程的内存;以及,释放所占用的内存,这样,通过申请占用内存,主动触发终端设备的操作系统的内存回收机制,释放内存,不需要申请操作系统的权限,也具有很高的安全性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种终端设备内存管理的方法及装置。
背景技术
用户在终端设备,例如手机上安装的应用程序越来越多,但手机的内存是很有限的,这就需要不断快速地分配和释放内存,以便不影响用户的正常使用。
现有技术中,内存管理的方法,接收到内存加速指令时,先获得安卓(Android)操作系统的权限,然后调用Android操作系统的函数kill Background Processes(),来直接杀死Android操作系统的进程,释放内存。
但是,现有技术中的内存管理方法,直接杀死所有进程的方式,会影响用户正常的使用,并且,需要先申请Android操作系统的权限,若未获得Android操作系统权限,则无法使用,降低了用户的使用体验。
发明内容
本发明实施例提供一种终端设备内存管理的方法及装置,以解决现有技术中需要申请操作系统权限,增加了用户的操作,降低了内存管理效率的问题。
本发明实施例提供的具体技术方案如下:
一种终端设备内存管理的方法,包括:
在接收到内存加速指令的条件下,获取所述终端设备的操作系统当前可用内存;
根据所述操作系统的当前可用内存,申请占用内存;其中,所述占用内存大小不超过所述当前可用内存大小;
触发所述终端设备的操作系统的内存回收机制,用于释放所述操作系统的进程的内存,以及,
释放所占用的内存。
一种终端设备内存管理的装置,包括:
确定模块,用于在接收到内存加速指令的条件下,获取所述终端设备的操作系统当前可用内存;
申请模块,用于根据所述操作系统的当前可用内存,申请占用内存;其中,所述占用内存大小不超过所述当前可用内存大小;
触发模块,用于触发所述终端设备的操作系统的内存回收机制,用于释放所述操作系统的进程的内存,以及,
释放模块,用于释放所占用的内存。
本发明实施例中,在接收到内存加速指令的条件下,获取所述终端设备的操作系统当前可用内存;根据所述操作系统的当前可用内存,申请占用内存;其中,所述占用内存大小不超过所述当前可用内存大小;触发所述终端设备的操作系统的内存回收机制,用于释放所述操作系统的进程的内存,以及,释放所占用的内存,这样,通过申请占用内存,触发终端设备的操作系统的内存回收机制,由终端设备的操作系统释放进程的内存,具有很高的安全性,并且,不需要预先申请终端设备的操作系统的权限,对于任何版本的操作系统,都可以正常使用,同时也减少了用户操作,提高了内存管理效率,提升了用户的使用体验。
附图说明
图1为本发明实施例提供的终端设备内存管理的方法的流程图;
图2为本发明实施例提供的终端设备内存管理的方法的执行过程流程图;
图3为本发明实施例提供的终端设备内存加速实现的过程界面示意图;
图4为本发明实施例提供的终端设备内存管理的装置结构示意图;
图5为本发明实施例提供的终端设备结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供的终端设备内存管理的方法具体包括以下步骤:
步骤100:在接收到内存加速指令的条件下,获取所述终端设备的操作系统当前可用内存。
实际中,以运行Android操作系统的终端设备为例,在使用时,经常有内存不足的情况,目前各种内存加速方法,例如,安全卫士等,可以用于内存加速,但使用时需要先申请操作系统的权限,若未获得操作系统的权限,则无法使用,影响了用户使用体验,本发明实施例中,主要针对Android操作系统,基于Android操作系统自身的内存管理特点,设计了一种内存加速方法。
执行步骤100时,具体包括:
首先,接收到内存加速指令。
具体可以有以下几种方式:
第一种方式:接收到用户通过对预设的加速按钮执行预设操作时,发送的内存加速指令。
其中,预设操作,例如为单击、长按或双击等,本发明实施例中并不进行限制。
例如,可以在手机加速界面上,或手机桌面上,设置一个加速按钮,当用户长按该加速按钮时就发送了内存加速指令,开始执行本发明实施例中的内存管理方法。
第二种方式:按照预设周期,接收到内存加速指令。
也就是说,本发明实例中,也可以不需要用户操作,通过设置一个时间周期,定期进行内存加速,例如每隔30分钟,主动发送一次内存加速指令,触发一次内存加速流程,减少了用户的操作。
当然,也可以采用其它方式发送内存加速指令,例如,每次解锁时,就发送了一次内存加速指令,进行内存加速,对此本发明实施例中,并不进行限制。
然后,获取所述终端设备的操作系统当前可用内存。
例如,以Android操作系统为例,在Android操作系统的代码开发中,设置有ActivityManager类,通过ActivityManager可以获取操作系统的可用内存信息以及正在运行在操作系统里的进程具体信息,具体地通过ActivityManager.MemoryInfo,就可以获取到Android操作系统的当前可用内存信息。
步骤110:根据所述当前可用内存,申请占用内存;其中,所述占用内存大小不超过所述当前可用内存大小。
执行步骤110时,具体包括:
首先,根据预设的比例系数和所述当前可用内存,计算得到占用内存大小为所述预设的比例系数与所述当前可用内存大小的乘积。
其中,所述预设的比例系数取值范围为[0,1],较佳地,预设的比例系数在0.8~0.9之间。这是因为,对于Android操作系统而言,只有在当前可用内存比较小时,才会触发Android操作系统的内存回收机制,因此,本发明实施例中,根据剩余的可用内存,强行在堆内存上申请一段内存空间,目的是让终端设备当前的可用内存减少,进而触发操作系统的内存回收机制,其中,堆在Android操作系统中用于存放动态的内存。
因此,比例系数越大,则申请的内存就越大,导致当前的可用内存就越小,但是考虑到实际运行过程中,终端设备本身的剩余内存会时刻在变化,若申请和当前可用内存一样大小的内存,可能会申请失败,所以,设置比例系数在0.8~0.9之间,不仅可以保证申请成功,还可以最大可能地确保能够触发Android操作系统的内存回收机制。
例如,计算占用内存大小方式为AllocateMem=x*AvailableMem。其中,AllocateMem表示占用内存大小,x表示比例系数,0<x<1,AvailableMem为当前可用内存。
然后,根据计算得到的占用内存大小,向所述操作系统申请占用内存,并将所占用的内存使用预设定值填充。
本发明实施例中,对于Android操作系统,通过调用Android操作系统的预设的.so文件中的memset函数来申请内存,其中,memset是计算机中C/C++语言函数,是Linux环境下一个直接操作内存空间的函数,.so文件是linux的动态链接库,将memset编写到.so文件中进行使用。
这样,就可以根据计算得到的占用内存大小,直接向Android操作系统申请内存,通过调用操作系统的函数就可以实现在内核上申请占用内存,不需要申请Android操作系统的权限。并且将申请的内存块全部使用预设的定值填充,就可以占用掉该内存,使得当前的可用内存减少。
步骤120:触发所述终端设备的操作系统的内存回收机制,用于释放所述操作系统的进程的内存。
执行步骤120时,具体包括:
首先,触发所述终端设备的操作系统的内存回收机制。
具体为:在确定当前可用内存小于第一预设阈值的条件下,触发所述终端设备的操作系统的内存回收机制。
例如,当申请占用内存后,终端设备当前的可用内存就变的很少,例如总内存为1G即1024M,第一预设阈值为230M,已用内存占比为80%,即可用内存占比为20%,具体为1024*20%=204.8M,判断204.8<230,则就会触发终端设备的操作系统的内存回收机制。
这样,通过申请占用内存,主动触发终端设备的操作系统自身的内存回收机制,进而实现内存加速的目的,进而也就不需要申请操作系统的权限,不需要用户打开高级权限,减少了用户操作,提升了用户的使用体验,同时,也提高了内存管理效率。
然后,释放所述操作系统的进程的内存。
即基于终端设备的操作系统的内存回收机制,释放所述操作系统的进程的内存。
具体为:根据操作系统的进程的运行状态,确定所述操作系统的进程的优先级,并根据进程的优先级,从低到高依次释放所述操作系统的进程的内存,直到确定所述终端设备的操作系统当前可用内存不小于第二预设阈值为止。
其中,Android操作系统按照进程的重要性,可以划分为5级,进程的优先级,从高到低分别是:前台进程、可见进程、服务进程、后台进程、空进程。
具体地:在Android操作系统中,1)前台进程:a、进程中包含处于前台的正与用户交互的activity;b、进程中包含与前台activity绑定的service;c、进程中包含调用了startForeground()方法的service:d、进程中包含正在执行onCreate(),onStart(),或onDestroy()方法的service;e、进程中包含正在执行onReceive()方法的BroadcastReceiver。
2)可见进程:a、进程中包含未处于前台但仍然可见的activity(调用了activity的onPause()方法,但没有调用onStop()方法)。例如是运行activity时弹出对话框,此时的activity虽然不是前台activity,但其仍然可见。B、进程中包含与可见activity绑定的service。
3)服务进程:进程中包含已启动的service。
4)后台进程:进程中包含不可见的activity(onStop()方法调用后的activity)。
5)空进程:不包含任何处于活动状态的进程是一个空进程。
这样,根据各个进程的运行状态,就可以确定进程是属于哪类进程,进而就可以确定进程的优先级,例如,操作系统中有3个进程,分别为进程1、进程2和进程3,分别根据这3个进程的运行状态,确定进程1为服务进程、进程2为前台进程、进程3为空进程,则这3个进程的优先级从高到低分别为:进程2、进程1、进程3。
若操作系统为Android操作系统,则执行步骤120时,触发Android操作系统的内存回收机制,用于释放Android操作系统的进程的内存。其中,释放Android操作系统的进程的内存,具体包括:通过默认内存回收机制和内核级内存回收机制,释放Android操作系统的进程的内存。
本发明实例中,触发了Android操作系统的内存回收机制,即触发了默认内存回收机制和内核级内存回收机制,通过这两种方式来进行内存释放。
为便于理解和描述,下面先对Android操作系统的内存管理机制进行简单介绍。
Android操作系统:Android操作系统本质是一个运行在Linux内核上的应用程序。同时Android操作系统对于运行在Linux进程中的安卓安装包(Android Package,APK)也有一套机制来管理。Android操作系统架构为四层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层。
Android操作系统的内存管理机制可以分为两个层次,其一是应用程序框架层的默认回收机制,另一部分是Linux内核层的内核级内存回收机制。
但Android操作系统的框架(Framework)是不能直接回收内存的,因为它的进程管理服务(Activity Manager Service,AMS)也是运行在加哇(Java)虚拟机环境中的一个应用,并不能感知到各个应用是否内存不足(Out Of Memory,OOM)。为了能够回收内存,Android操作系统会在Linux内核中注册为类型为OOM Killer的进程。AMS会将进程的优先级提交给OOM Killer。在Linux内核的内存管理模块发现内存不足时,就会通知OOM Killer进程,根据AMS提供的优先级,强制停止低优先级的进程。另外,Android操作系统注册的OOMKiller仅仅可以结束Android操作系统的进程。
实际中,Android操作系统对内存的使用方式是最大限度的使用。Android操作系统会在内存中保存尽可能多的数据,即使一些进程不用了,但数据还存储在内存中。当用户下次再启动应用的时候,只需要恢复当前进程就可以了,不需要重新创建进程,这样可以减少了应用的启动时间,提高了用户体验。
由于Android操作系统的这种内存使用方式,同时为了平衡操作系统整体性能,Android操作系统不保存空进程,会将后台进程会存放在近期最少使用(Least RecentlyUsed,LRU)缓存列表中。这样,Android操作系统在回收内存时,会优先清理空进程,然后对LRU缓存列表中的进程进行清理。
当Android操作系统开始杀死LRU缓存列表中的进程时,先杀死处于缓存列表尾部的进程,并会判断每个进程杀死后带来的回收收益,这是因为Android操作系统总是倾向于杀死一个能回收更多内存的进程,从而可以杀死更少的进程,来获取更多的内存,杀死的进程越少,对用户体验的影响就越小。当LRU缓存列表中的进程清理完成之后,内存依旧不足,才会对服务进程、可见进程或前台进程,这些会对用户造成明显影响的进程进行清理。
这样,本发明实施例中,通过申请占用内存,能够主动触发Android操作系统自身的内存回收机制,基于Android操作系统的内存回收机制,可以根据各个进程的优先级,依次杀死进程,释放内存,而不是直接结束所有进程,这样能够最大可能地降低了对用户正常使用的影响。
步骤130:释放所占用的内存。
也就是说,本发明实施例中,申请占用内存,并不是真的给某个应用程序使用,而是强制性申请占用的一段动态内存,作为一个触发手段,目的是触发操作系统自身的内存回收机制,对操作系统的进程进行清理,释放内存,完成后,就可以将申请的所占用的内存释放掉。
本发明实施例中,接收到内存加速指令,强制申请占用内存,触发终端设备的操作系统的内存回收机制,由终端设备的操作系统对进程进行清理,释放内存,具有很高的安全性,并且,使用本发明实施例中的内存管理方法,不需要预先申请终端设备的操作系统的权限,对于任何版本的操作系统,都可以正常使用。
并且,基于操作系统的内存回收机制,释放内存时,是根据各进程的优先级依次释放内存,对于优先级较高的进程,可能就不需要结束,降低了对用户使用体验的影响。
下面采用一个具体的应用场景对上述实施例作出进一步详细说明。以Android操作系统为例,具体参阅图2所示,本发明实施例中,终端设备内存管理的方法的执行过程具体如下:
步骤200:接收内存加速指令。
执行步骤200时,具体地可以为用户通过预设的加速按钮触发,也可以为周期性主动触发。
例如,以用户在Android手机上实现内存加速为例,参阅图3所示,为终端设备内存加速实现的过程界面示意图,用户找到手机中的手机加速功能,打开手机加速界面,参阅图3(1)所示,显示当前内存已用63%,并且还可以显示更详细的内存信息,例如,总计:1854M,可用:692M,用户点击“加速”按钮,发送了内存加速指令。
步骤201:获取终端设备的操作系统的当前可用内存。
具体地,以Android操作系统为例,通过ActivityManager.MemoryInfo来获取操作系统的当前可用内存。
步骤202:调用.so文件。
其中,.so文件为是linux的动态链接库,通常通过.so文件来申请内存。
步骤203:根据当前可用内存,申请占用内存。
例如,AllocateMem=x*AvailableMem,其中0<x<1。即所占用的内存大小不超过当前可用内存大小。
步骤204:判断是否触发终端设备的操作系统的内存回收机制,若是,则执行步骤205,否则,则转向执行步骤201。
步骤205:通知OOM Killer进程,根据进程的优先级,释放操作系统的进程的内存。
这里的OOM Killer进程是Android操作系统自身的内存回收机制中预先在linux内核中注册的用于回收内存的进程,具体地基于OOM Killer进程释放Android操作系统的进程的内存的方法,为现有的Android操作系统中的方法,这里就不再详细介绍了。
步骤206:释放所占用的内存。
即释放内存AllocateMem,例如参阅图3(2)所示,显示当前内存已用52%,释放内存88.52M,总计:1854M,可用892M,其中,可用892M大于图3(1)中的可用692M,可知,当前可用内存增加了,实现了内存加速,值得说明的是,图3仅仅是一种可以实现的示例,对于功能按钮或界面的设置等并不进行限制。
这样,最后再将强制申请占用的内存,进行释放,不仅获得了操作系统释放的进程的内存,还同时获得所占用的内存,实现了内存加速。
本发明实施例中,通过强制申请占用内存,主动触发终端设备的系统的内存回收机制,就可以根据各进程的优先级,释放内存,最大程度降低对用户的影响,并且,通过触发终端设备的操作系统的内存回收机制来释放内存,不需要申请该操作系统的权限,相较现有技术而言,也无需向其它具有内存加速功能的应用程序授予权限,还具有很高的安全性。
基于上述实施例,参阅图4所示,本发明实施例中,终端设备内存管理的装置,具体包括:
确定模块40,用于在接收到内存加速指令的条件下,获取所述终端设备的操作系统当前可用内存;
具体地,可以通过Android操作系统的方法ActivityManager.MemoryInfo,获取Android操作系统的当前可用内存信息。
申请模块41,用于根据所述操作系统的当前可用内存,申请占用内存;其中,所述占用内存大小不超过所述当前可用内存大小;
触发模块42,用于触发所述终端设备的操作系统的内存回收机制,用于释放所述操作系统的进程的内存,以及,
释放模块43,用于释放所占用的内存。
较佳的,根据所述当前可用内存,申请占用内存,申请模块41具体用于:
根据预设的比例系数和所述当前可用内存,计算得到占用内存大小为所述预设的比例系数与所述当前可用内存大小的乘积;
根据计算得到的占用内存大小,向所述操作系统申请占用内存,并将所占用的内存使用预设定值填充。
例如,AllocateMem=x*AvailableMem,其中0<x<1,AllocateMem为申请的占用内存大小,AvailableMem为当前可用内存。
较佳的,触发所述终端设备的操作系统的内存回收机制,触发模块42具体用于:
在确定当前可用内存小于第一预设阈值的条件下,触发所述终端设备的操作系统的内存回收机制。
较佳的,释放所述操作系统的进程的内存,触发模块42具体用于:
触发所述终端设备的操作系统的内存回收机制,用于根据所述操作系统的进程的运行状态,确定所述操作系统的进程的优先级,并根据进程的优先级,从低到高依次释放所述操作系统的进程的内存,直到确定所述终端设备的操作系统当前可用内存不小于第二预设阈值为止。
较佳的,接收到内存加速指令,确定模块40具体用于:
接收到用户通过对预设的加速按钮执行预设操作时,发送的内存加速指令;或,
按照预设周期,接收到内存加速指令。
本发明实施例中,接收到内存加速指令时,先申请占用内存,使得终端设备的操作系统的当前可用内存减少,进而触发操作系统的内存回收机制,基于操作系统的内存回收机制,释放操作系统的进程的内存,最后在释放操作系统的进程的内存完成后,释放申请的所占用的内存,不仅能够节省内存,实现内存加速,还不需要预先申请终端设备的操作系统的权限,减少用户操作,具有很高的安全性,也提升了用户使用体验。
参阅图5所示,本发明实施例中,一种终端设备的结构示意图。
本发明实施例提供了一种终端设备,终端设备可以为但不限于手机、平板电脑等。该终端设备可以包括:存储器510、输入模块520、发送模块530、接收模块540、输出模块550、无线通信模块560和处理器570等。具体为:
存储器510可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器570提供存储器510中存储的程序指令和数据,还可以存储终端设备的操作系统、应用程序(Application,APP)、模块和终端设备所使用的各种数据等。
输入模块520可以包括键盘、鼠标、触摸屏等,用于接收用户输入的数字、字符信息或触摸操作,以及产生与终端设备的用户设置以及功能控制有关的键信号的输入等,例如,本发明实施例中,输入模块520可以接收用户对内存加速按钮的操作等。
发送模块530可以提供终端设备与服务器之间的接口。
接收模块540同样提供终端设备与服务器之间的接口。
输出模块550可以包括显示模块,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等,其中,显示模块可以用于显示由用户输入的信息或提供给用户的信息,或各种终端设备或社交应用的菜单、用户界面等。例如,本发明实施例中,可以用于向用户展示内存加速界面。
无线通信模块560包括但不限于无线保真(wireless fidelity,WiFi)模块、蓝牙模块、红外通信模块等。
处理器570是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器510内的软件程序和/或模块,以及调用存储在存储器510内的数据,执行终端设备的各种功能和处理数据,从而对终端设备进行整体监控。
当然,图5中所示的终端设备的结构,仅仅是其中一种示例,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种终端设备内存管理的方法,其特征在于,包括:
在接收到内存加速指令的条件下,获取所述终端设备的操作系统当前可用内存;
根据所述操作系统的当前可用内存,申请占用内存;其中,所述占用内存大小不超过所述当前可用内存大小;
触发所述终端设备的操作系统的内存回收机制,用于释放所述操作系统的进程的内存,以及,
释放所占用的内存。
2.如权利要求1所述的方法,其特征在于,根据所述当前可用内存,申请占用内存,具体包括:
根据预设的比例系数和所述当前可用内存,计算得到占用内存大小为所述预设的比例系数与所述当前可用内存大小的乘积;
根据计算得到的占用内存大小,向所述操作系统申请占用内存,并将所占用的内存使用预设定值填充。
3.如权利要求1所述的方法,其特征在于,触发所述终端设备的操作系统的内存回收机制,具体为:
在确定当前可用内存小于第一预设阈值的条件下,触发所述终端设备的操作系统的内存回收机制。
4.如权利要求1、2或3所述的方法,其特征在于,释放所述操作系统的进程的内存,具体包括:
根据所述操作系统的进程的运行状态,确定所述操作系统的进程的优先级,并根据进程的优先级,从低到高依次释放所述操作系统的进程的内存,直到确定所述终端设备的操作系统当前可用内存不小于第二预设阈值为止。
5.如权利要求4所述的方法,其特征在于,接收到内存加速指令,具体包括:
接收到用户通过对预设的加速按钮执行预设操作时,发送的内存加速指令;或,
按照预设周期,接收到内存加速指令。
6.一种终端设备内存管理的装置,其特征在于,包括:
确定模块,用于在接收到内存加速指令的条件下,获取所述终端设备的操作系统当前可用内存;
申请模块,用于根据所述操作系统的当前可用内存,申请占用内存;其中,所述占用内存大小不超过所述当前可用内存大小;
触发模块,用于触发所述终端设备的操作系统的内存回收机制,用于释放所述操作系统的进程的内存,以及,
释放模块,用于释放所占用的内存。
7.如权利要求6所述的装置,其特征在于,根据所述当前可用内存,申请占用内存,申请模块具体用于:
根据预设的比例系数和所述当前可用内存,计算得到占用内存大小为所述预设的比例系数与所述当前可用内存大小的乘积;
根据计算得到的占用内存大小,向所述操作系统申请占用内存,并将所占用的内存使用预设定值填充。
8.如权利要求6所述的装置,其特征在于,触发所述终端设备的操作系统的内存回收机制,触发模块具体用于:
在确定当前可用内存小于第一预设阈值的条件下,触发所述终端设备的操作系统的内存回收机制。
9.如权利要求6、7或8所述的装置,其特征在于,释放所述操作系统的进程的内存,触发模块具体用于:
触发所述终端设备的操作系统的内存回收机制,用于根据所述操作系统的进程的运行状态,确定所述操作系统的进程的优先级,并根据进程的优先级,从低到高依次释放所述操作系统的进程的内存,直到确定所述终端设备的操作系统当前可用内存不小于第二预设阈值为止。
10.如权利要求9所述的装置,其特征在于,接收到内存加速指令,确定模块具体用于:
接收到用户通过对预设的加速按钮执行预设操作时,发送的内存加速指令;或,
按照预设周期,接收到内存加速指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710946427.4A CN109669733A (zh) | 2017-10-12 | 2017-10-12 | 一种终端设备内存管理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710946427.4A CN109669733A (zh) | 2017-10-12 | 2017-10-12 | 一种终端设备内存管理的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109669733A true CN109669733A (zh) | 2019-04-23 |
Family
ID=66138620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710946427.4A Pending CN109669733A (zh) | 2017-10-12 | 2017-10-12 | 一种终端设备内存管理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109669733A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090389A (zh) * | 2019-10-31 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 一种缓存空间的释放方法、设备以及存储介质 |
CN112860444A (zh) * | 2021-04-26 | 2021-05-28 | 腾讯科技(深圳)有限公司 | 内存调用信息的确定方法和装置、存储介质及电子设备 |
CN113268284A (zh) * | 2021-06-01 | 2021-08-17 | 广州欢网科技有限责任公司 | 安卓app快速释放内存的实现方法、装置及计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970668A (zh) * | 2013-02-01 | 2014-08-06 | 腾讯科技(深圳)有限公司 | 内存清理方法、装置及终端 |
CN105701025A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种内存回收方法及装置 |
-
2017
- 2017-10-12 CN CN201710946427.4A patent/CN109669733A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970668A (zh) * | 2013-02-01 | 2014-08-06 | 腾讯科技(深圳)有限公司 | 内存清理方法、装置及终端 |
CN105701025A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种内存回收方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090389A (zh) * | 2019-10-31 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 一种缓存空间的释放方法、设备以及存储介质 |
CN111090389B (zh) * | 2019-10-31 | 2021-06-29 | 苏州浪潮智能科技有限公司 | 一种缓存空间的释放方法、设备以及存储介质 |
CN112860444A (zh) * | 2021-04-26 | 2021-05-28 | 腾讯科技(深圳)有限公司 | 内存调用信息的确定方法和装置、存储介质及电子设备 |
CN113268284A (zh) * | 2021-06-01 | 2021-08-17 | 广州欢网科技有限责任公司 | 安卓app快速释放内存的实现方法、装置及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582463B (zh) | 资源配置方法、装置、终端及存储介质 | |
CN109298936B (zh) | 一种资源调度方法及装置 | |
CN109669733A (zh) | 一种终端设备内存管理的方法及装置 | |
CN102262557B (zh) | 通过总线架构构建虚拟机监控器的方法及性能服务框架 | |
CN108848055A (zh) | 一种区块链共识方法、记账节点及节点 | |
US11426665B2 (en) | Method, apparatus, computer program and recording medium for providing game service | |
CN110515717A (zh) | 应用程序的后台切换方法、装置、设备以及存储介质 | |
CN107533596B (zh) | 指纹识别方法及移动终端 | |
WO2021218333A1 (zh) | 监管沙盒架构、监管方法、装置及存储介质 | |
CN103309796A (zh) | 一种组件对象模型对象的监控方法和装置 | |
CN116185623A (zh) | 任务分配方法、装置、电子设备及存储介质 | |
CN106383747A (zh) | 一种计算资源调度方法及装置 | |
CN110162404B (zh) | 一种安全资源池资源分配方法、系统、设备及计算机介质 | |
CN112835639A (zh) | 一种Hook实现方法、装置、设备、介质及产品 | |
CN111045725B (zh) | 代码管理系统的控制方法、装置及存储介质 | |
CN108958763B (zh) | 应用程序崩溃的处理方法、装置、电子设备及服务器 | |
CN108628620B (zh) | Pos应用开发的实现方法、装置、计算机设备和存储介质 | |
CN111797016B (zh) | 应用程序的测试方法、设备、存储介质及装置 | |
CN106815061B (zh) | 一种业务处理方法及装置 | |
CN111580975B (zh) | 用于语音合成的内存优化方法及系统 | |
CN108121574A (zh) | 一种内核模块的热升级方法、装置及虚拟机系统 | |
CN106407016A (zh) | 一种多线程争抢资源的模拟方法及装置 | |
CN112274916A (zh) | 一种键鼠输入方法、装置、设备及介质 | |
KR102098905B1 (ko) | 호스트의 테스트 시나리오로 제어장치의 복수의 파티션간 영향도를 측정하기 위한 방법, 동일 방법을 구현하기 위한 호스트 및 시스템, 그리고 동일 방법을 기록하기 위한 매체 | |
CN107678737B (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 |