CN109753361A - 一种内存管理方法、电子设备及存储装置 - Google Patents

一种内存管理方法、电子设备及存储装置 Download PDF

Info

Publication number
CN109753361A
CN109753361A CN201910009079.7A CN201910009079A CN109753361A CN 109753361 A CN109753361 A CN 109753361A CN 201910009079 A CN201910009079 A CN 201910009079A CN 109753361 A CN109753361 A CN 109753361A
Authority
CN
China
Prior art keywords
memory
reserved memory
value
distributed
reserved
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
Application number
CN201910009079.7A
Other languages
English (en)
Other versions
CN109753361B (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.)
Hefei Jie Fa Technology Co Ltd
Original Assignee
Hefei Jie Fa 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 Hefei Jie Fa Technology Co Ltd filed Critical Hefei Jie Fa Technology Co Ltd
Priority to CN201910009079.7A priority Critical patent/CN109753361B/zh
Publication of CN109753361A publication Critical patent/CN109753361A/zh
Priority to US16/438,489 priority patent/US20200218573A1/en
Application granted granted Critical
Publication of CN109753361B publication Critical patent/CN109753361B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/5022Mechanisms to release resources

Abstract

本发明公开了一种内存管理方法、电子设备及具有存储功能的装置,所述方法包括:获取组件/应用程序当前所需预留内存值,预留内存是操作系统为组件/应用程序预留的不会被映射为运行内存的部分物理内存;判断当前所需预留内存值是否小于已分配预留内存值,已分配预留内存值是操作系统为组件/应用程序分配的预留内存大小;若小于已分配预留内存值,则回收多余的预留内存,并将回收的预留内存作为运行内存再分配使用。通过上述方式,本发明能够提高内存的利用率。

Description

一种内存管理方法、电子设备及存储装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种内存管理方法、电子设备及具有存储功能的装置。
背景技术
操作系统作为设备的核心软件,管理着设备的硬件与软件资源,维护它们保持在正常的状态,在操作系统管理的硬件物理资源中,内存是不可或缺的重要组成部分。目前操作系统中查看到的内存,是操作系统运行程序时可用的总内存,即运行内存,这个值是小于操作系统实际能够使用的物理内存,例如1G的物理内存,操作系统查看到的运行内存为0.9G。0.1G的内存就是操作系统所定义的预留内存(reserve memory),预留内存是一种写在DTS(Device Tree Source,设备树源码)文件中的连续内存区域,是操作系统启动之前提前分配好的,当操作系统启动时,对该区域不做地址映射,即对操作系统透明,只提供给特定的组件/应用程序使用,不会被操作系统分配给其他组件/应用程序使用。
本发明的发明人在长期的研发过程中,发现目前操作系统中对于预留内存的使用方式单一,当操作系统为一个组件/应用程序分配一段预留内存时,直至操作系统结束,没有第二个组件/应用程序可以使用该块内存,造成内存资源浪费,同时也减少了运行内存的大小,增加了因内存不足而发生错误的概率。
发明内容
本发明主要解决的技术问题是提供一种内存管理方法、电子设备及具有存储功能的装置,能够提高内存的利用率。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种内存管理方法,所述方法包括:获取组件/应用程序当前所需预留内存值,预留内存是操作系统为组件/应用程序预留的不会被映射为运行内存的部分物理内存;判断当前所需预留内存值是否小于已分配预留内存值,已分配预留内存值是操作系统为组件/应用程序分配的预留内存大小;若小于已分配预留内存值,则回收多余的已分配预留内存,并将回收的预留内存作为运行内存再分配使用。
为解决上述技术问题,本发明采用的另一个技术方案是:提供一种电子设备,所述电子设备包括处理器和存储器,处理器耦接存储器,存储器用于存储操作系统,处理器用于获取组件/应用程序当前所需预留内存值,预留内存是操作系统为组件/应用程序预留的不会被映射为运行内存的部分物理内存;判断当前所需预留内存值是否小于已分配预留内存值,已分配预留内存值是操作系统为组件/应用程序分配的预留内存大小;若小于已分配预留内存值,则回收多余的已分配预留内存,并将回收的预留内存作为运行内存再分配使用。
为解决上述技术问题,本发明采用的另一个技术方案是:提供一种具有存储功能的装置,所述装置存储有程序,所述程序被执行时实现上述的内存管理方法。
本发明的有益效果是:区别于现有技术的情况,本发明提供一种内存管理方法,该方法中,在操作系统启动过程中,检测系统中不同组件/应用程序所需要使用的实际预留内存大小,如果实际所需的预留内存比系统分配的小,则将多余的预留内存释放,并将回收的预留内存作为运行内存再分配使用,增加系统可用总内存,提高系统内存利用率。
附图说明
图1是本发明内存管理方法第一实施方式的流程示意图;
图2是本发明内存管理方法第二实施方式的流程示意图;
图3是本发明内存管理方法第三实施方式的流程示意图;
图4是本发明电子设备第一实施方式的结构示意图;
图5是本发明具有存储功能的装置第一实施方式的结构示意图。
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。
本发明提供一种内存管理方法,至少应用于车机、电脑、移动设备的操作系统对内存的管理。在操作系统中,其所能使用的物理内存是一定的,是由内存这个实际的物理设备来决定的,如果不更换物理设备,所能用的物理内存是不会改变的。例如1G的内存条(随机存取存储器,Random-Access Memory,RAM),指的是物理内存有1G,这个值是不会改变。
在运行操作系统时,操作系统将物理内存分为运行内存与预留内存两部分来使用。其中,预留内存是操作系统为特定组件/应用程序预留的用于存放数据的空间,这一部分内存不会被映射为运行内存。特定组件/应用程序是一些关键硬件或软件应用,如显示器、硬盘、显卡、网卡等硬件设备;图像缩放、图像去噪、倒车等必要软件应用,例如显示组件(framebuffer)需要使用预留内存保存屏幕显示的数据。当操作系统启动时,通过读取DTS文件,得到需要分配的预留内存的大小,在进行运行内存映射时,忽略该区域,即操作系统运行内存会相比较物理内存减少预留内存的大小。系统应用中请求分配内存占用的是运行内存,不会涉及预留内存,例如malloc、kalloc等函数API(Application ProgrammingInterface,应用程序编程接口)。
为了实现电子设备支持更好的硬件组件性能或软件应用程序的兼容性,通常会按照组件/应用程序使用的最大内存空间在预留内存中分配一段空间使用,但是组件/应用程序实际使用的预留内存并不一定需要这么大,会有一定的空余。当前的操作系统中,将预留内存分配给特定的组件/应用程序使用后,即使预留内存有空余也不会对分配的预留内存做回收机制,造成分配的预留内存利用率不高,内存资源浪费的问题。而实际上对于预留内存系统是可以通过某种方式回收的。
在此基础上,本发明提供一种内存管理方法,该方法中可以对预留内存进行回收,供系统使用,提高预留内存的利用率,增加系统运行内存,供系统使用。请参阅图1,图1是本发明内存管理方法第一实施方式的流程示意图,在该实施方式中,内存的管理方法包括如下步骤:
S101:获取组件/应用程序当前所需预留内存值。
其中,当前所需预留内存值是指运行组件/应用程序实际所需要使用的预留内存大小。可以利用应用程序编程接口函数计算组件/应用程序当前所需预留内存值,具体可根据不同组件/应用程序的数据类型计算存储这些数据所需要使用的预留内存的空间大小。
S102:判断当前所需预留内存值是否小于已分配预留内存值。
其中,已分配预留内存值是操作系统为组件/应用程序分配的预留内存大小。
S103:若小于已分配预留内存值,则回收多余的已分配预留内存,并将回收的预留内存作为运行内存再分配使用。
其中,分配当前所需预留内存值大小的预留内存给组件/应用程序可以是继续使用已分配的预留内存,释放回收多余的预留内存;也可以是重新为组件/应用程序分配一块新的目标大小的预留内存,将已分配的预留内存整体释放回收。或者在运行内存中重新为组件/应用程序分配一块新的目标大小的内存空间,并将这一内存区域修改为预留内存,同时将已分配的预留内存整体释放回收。通过这种方式,可以减少内存碎片,进一步提高内存的利用率。
在一实施方式中,若当前所需预留内存值等于已分配预留内存值,则无需变更预留内存的分配。若当前所需预留内存值大于已分配预留内存值,则说明该操作系统不支持/兼容该组件/应用程序,此时系统会出错,将不能正常启动。
其中,在一实施方式中,已分配预留内存值是操作系统第一次为组件/应用程序分配的初始预留内存大小。系统分配的预留内存在DTS文件中已经写好,在系统启动时,通过读取DTS文件,获取需要分配的预留内存大小,并将这些内存空间预留出来。
以显示组件为例,显示组件需要使用预留内存保存屏幕显示的数据,通常情况下保存的数据大小与屏幕的分辨率相关,如果屏幕的分辨率大,使用的预留内存就会较大。为了能够支持更大的分辨率,系统会预先分配一个比较大的预留内存,其大小FB_MAX已经在DTS中写好,系统启动时,将FB_MAX大小的内存从物理内存中去除。
通常情况下,在预定的软硬件系统中,屏幕分辨率是确定的,需要使用的内存空间也已经确定。因此系统启动时,可以获取显示组件当前所需预留内存大小FB_SIZE,具体可以通过API获取屏幕分辨率,再利用预定公式计算出当前所需预留内存大小FB_SIZE。其中,屏幕分辨率包括屏幕的水平分辨率w,垂直分辨率h,位深bitcount等信息;利用公式FB_SIZE=w*h*(bitcount/8)*n,n表示需要多少个;就能计算出当前所需预留内存大小。
将当前所需预留内存大小FB_SIZE与已分配预留内存大小FB_MAX进行比较,若当前所需预留内存大小FB_SIZE小于已分配预留内存大小FB_MAX;则将多余的(FB_MAX–FB_SIZE)预留内存释放,系统会自动将释放的内存空间回收。
其中,在一实施方式中,被回收的预留内存将作为运行内存来再分配使用。在上述实施方式中,将预留内存重新分配后,系统运行内存将增加(FB_MAX–FB_SIZE),当系统其它应用通过内存分配API(例如malloc、kalloc等)创建一段区域,系统会自动将该释放的空闲区域分配给其他应用使用。
其中,在一实施方式中,为了使运行内存最大化,在系统启动时,逐一对特定组件/应用程序的预留内存进行空闲检测,释放出多余的预留内存。在其他实施方式中,也可以先对运行内存的空余值进行检测,若目前运行内存的空余值大于预设阈值,说明目前运行内存足够使用,无需对预留内存进行释放;若目前运行内存的空余值小于预设阈值,说明目前运行内存不足,可以对预留内存进行空闲检测,尽量多的释放预留内存,以增大运行内存,提供内存利用率。
其中,在一实施方式中,可以只在系统启动时对空闲预留内存进行检测,对于某一组件/应用程序而言只对其当前所需预留内存值进行一次检测,对多余的预留内存进行一次释放,直到系统关机或重启,不再对组件/应用程序的预留内存进行变更,即预留内存的释放具有不可逆性。
但是如果在系统运行中,需要更换某些硬件(带电或不带电)或者增加/减少软件,其所对应的预留内存也可能发生变化,如果只检测一次,会不利于组件/应用程序的运行,因此,在另一实施方式中,可以动态的对组件/应用程序的预留内存进行检测管理。
请参阅图2,图2是本发明内存管理方法第二实施方式的流程示意图,在该实施方式中,内存的管理方法包括如下步骤:
S201:接收组件/应用程序的变更通知。
其中,在系统运行期间,如果更换了某些硬件组件或增减了软件应用程序功能,则通知操作系统,组件/应用程序已变更,所需预留内存可能发生了变化,需要对预留内存进行重新检测分配。
S202:获取变更后的组件/应用程序当前所需预留内存值。
其中,可以通过API获取并利用预定公式计算出组件/应用程序当前所需预留内存大小。以显示组件为例,更换显示器后,屏幕的分辨率可能会发生改变,利用公式MOD_SIZE=w*h*(bitcount/8)*n,n表示需要多少个;计算出变更后的组件/应用程序当前所需预留内存大小MOD_SIZE。
S203:判断当前所需预留内存值是否小于已分配预留内存值。
其中,已分配预留内存值是变更分配后的预留内存大小,即是操作系统根据变更前的组件/应用程序实际所需预留内存大小重新分配过的预留内存大小FB_SIZE。
若MOD_SIZE小于FB_SIZE,则执行步骤S204:回收多余的预留内存(FB_SIZE-MOD_SIZE),并将回收的预留内存作为运行内存再分配使用。即继续使用之前分配的预留内存区域,并释放回收(FB_SIZE-MOD_SIZE)的预留内存空间,运行内存增加(FB_SIZE-MOD_SIZE),所增加的运行内存可分配给其他组件/应用程序使用。
若MOD_SIZE大于FB_SIZE,则执行步骤S205:判断当前所需预留内存值MOD_SIZE是否小于或等于当前运行内存的空余值。
若MOD_SIZE小于或等于当前运行内存的空余值,则执行步骤S206:分配当前所需预留内存值大小MOD_SIZE的运行内存给变更后的组件/应用程序,且将所分配的运行内存设置为预留内存,并回收已分配预留内存FB_SIZE。即直接在运行内存中重新为组件/应用程序分配目标大小的内存空间,并将这些运行内存设置为预留内存,将原来已分配的预留内存FB_SIZE整体回收,作为运行内存使用。通过这种方式,既能够满足组件/应用程序的预留内存,还能够减少内存碎片。
若MOD_SIZE大于当前运行内存的空余值,则执行步骤S207:清理已占用运行内存,直至当前运行内存的空余值大于当前所需预留内存值MOD_SIZE,再分配当前所需预留内存值MOD_SIZE大小的运行内存给变更后的组件/应用程序,同时将所分配的运行内存设置为预留内存,并回收已分配预留内存FB_SIZE。其中,可以通过系统的API关闭一些僵尸应用程序(APP),或关闭其他一些优先级别较低的应用程序,清理回收出足够多的运行内存供操作系统分配。然后操作系统直接在运行内存中重新为组件/应用程序分配目标大小MOD_SIZE的内存空间,并将这些运行内存设置为预留内存,将原来已分配的预留内存FB_SIZE整体回收,作为运行内存使用。
请参阅图3,图3是本发明内存管理方法第三实施方式的流程示意图,在该实施方式中,内存的管理方法包括如下步骤:
S301:接收组件/应用程序的变更通知。
其中,在系统运行期间,如果更换了某些硬件组件或增减了软件应用程序功能,则通知操作系统,组件/应用程序已变更,所需预留内存可能发生了变化,需要对预留内存进行重新检测分配。
S302:获取变更后的组件/应用程序当前所需预留内存值。
其中,可以通过API获取并利用预定公式计算出组件/应用程序当前所需预留内存大小。以显示组件为例,更换显示器后,屏幕的分辨率可能会发生改变,利用公式MOD_SIZE=w*h*(bitcount/8)*n,n表示需要多少个;计算出变更后的组件/应用程序当前所需预留内存大小MOD_SIZE。
S303:判断当前所需预留内存值是否小于已分配预留内存值。
其中,已分配预留内存值是变更分配后的预留内存大小,即是操作系统根据变更前的组件/应用程序实际所需预留内存大小重新分配过的预留内存大小FB_SIZE。
若MOD_SIZE小于FB_SIZE,则执行步骤S304:回收多余的已分配预留内存(FB_SIZE-MOD_SIZE),并将回收的预留内存作为运行内存再分配使用。即继续使用之前分配的预留内存区域,并释放回收(FB_SIZE-MOD_SIZE)的预留内存空间,运行内存增加(FB_SIZE-MOD_SIZE),所增加的运行内存可分配给其他组件/应用程序使用。
若MOD_SIZE大于FB_SIZE,则执行步骤S305:判断当前所需预留内存值与已分配预留内存值之间的差值(MOD_SIZE-FB_SIZE)是否小于或等于当前运行内存的空余值。
若(MOD_SIZE-FB_SIZE)小于或等于当前运行内存的空余值,则执行步骤S306:分配当前所需预留内存值与已分配预留内存值之间差值(MOD_SIZE-FB_SIZE)大小的运行内存给变更后的组件/应用程序,且将所分配的运行内存设置为预留内存。即在运行内存中重新为组件/应用程序分配一定大小的内存空间来补齐不足的预留内存,并将这些运行内存设置为预留内存。其中,在执行步骤S306之前还可以先判断已分配预留内存块周边是否有大于差值(MOD_SIZE-FB_SIZE)大小的连续空余内存空间,若有,则在将运行内存设置为预留内存时,将其设置为与原已分配预留内存连续起来。若没有,则重新调整预留内存中不同组件/应用程序所在内存块的区域,以使已分配预留内存块周边有足够的连续空余内存空间。
若(MOD_SIZE-FB_SIZE)大于当前运行内存的空余值,则执行步骤S307:清理已占用运行内存,直至当前运行内存的空余值大于当前所需预留内存值与已分配预留内存值之间的差值(MOD_SIZE-FB_SIZE),再分配当前所需预留内存值与已分配预留内存值之间的差值大小的运行内存给变更后的组件/应用程序,同时将所分配的运行内存设置为预留内存。具体操作请参阅上述实施方式的描述,在此不再赘述。
通过这种方法,可以动态的调整预留内存,实现预留内存释放的可逆性,以能满足组件/应用程序正常运行,如当运行不同版本的软件时,为了实现软件的兼容性,通常会按照软件使用的最大内存空间在预留内存中分配一段空间使用,可以根据版本的不同,对预留内存实现释放或增加,保证每个版本使用的预留内存是和版本是正相关的。本发明所提供的方法利用预留内存,动态增加系统运行内存的大小,使运行内存最大化,提高内存利用率。系统运行内存增加,可以运行的软件相对多一些,软件可申请的内存空间增加,因此降低了软件因申请不到内存空间,而发生错误的概率。
基于此,本发明还提供一种电子设备,请参阅图4,图4是本发明电子设备第一实施方式的结构示意图。在该实施方式中,电子设备40包括处理器401和存储器402,处理器401耦接存储器402,存储器402用于存储操作系统,处理器401用于获取组件/应用程序当前所需预留内存值,预留内存是操作系统为组件/应用程序预留的不会被映射为运行内存的部分物理内存;判断当前所需预留内存值是否小于已分配预留内存值,已分配预留内存值是操作系统为组件/应用程序分配的预留内存大小;若小于已分配预留内存值,则分配当前所需预留内存值大小的预留内存给组件/应用程序,并回收多余的已分配预留内存。具体执行过程请参阅上述实施方式的描述,在此不再赘述。本发明所提供的电子设备能够执行上述的内存管理方法,提供内存利用率。电子设备可以是车机、电脑、手机等。
本发明还提供一种具有存储功能的装置,请参阅图5,图5是本发明具有存储功能的装置第一实施方式的结构示意图。在该实施方式中,存储装置50存储有程序501,程序501被执行时实现上述内存管理方法。具体工作过程与上述方法实施例中一致,故在此不再赘述,详细请参阅以上对应方法步骤的说明。其中具有存储功能的装置可以是便携式存储介质如U盘、光盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟等各种可以存储程序代码的介质,也可以是终端、服务器等。
在本发明所提供的几个实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本发明各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种内存管理方法,其特征在于,所述方法包括:
获取组件/应用程序当前所需预留内存值,所述预留内存是操作系统为所述组件/应用程序预留的不会被映射为运行内存的部分物理内存;
判断所述当前所需预留内存值是否小于已分配预留内存值,所述已分配预留内存值是操作系统为所述组件/应用程序分配的预留内存大小;
若小于所述已分配预留内存值,则回收多余的已分配预留内存,并将回收的预留内存作为运行内存再分配使用。
2.根据权利要求1所述的内存管理方法,其特征在于,所述已分配预留内存值是操作系统第一次为所述组件/应用程序分配的初始预留内存大小。
3.根据权利要求1所述的内存管理方法,其特征在于,所述已分配预留内存值是变更分配后的预留内存大小。
4.根据权利要求3所述的内存管理方法,其特征在于,所述获取组件/应用程序当前所需预留内存值包括:
接收所述组件/应用程序的变更通知;
获取变更后的所述组件/应用程序当前所需预留内存值。
5.根据权利要求4所述的内存管理方法,其特征在于,所述方法还包括:
若所述变更后的所述组件/应用程序当前所需预留内存值大于所述已分配预留内存值,则判断所述当前所需预留内存值是否小于或等于当前运行内存的空余值;
若小于或等于所述当前运行内存的空余值,则分配所述当前所需预留内存值大小的运行内存给变更后的所述组件/应用程序,且将所分配的运行内存设置为预留内存,并回收所述已分配预留内存。
6.根据权利要求5所述的内存管理方法,其特征在于,所述方法还包括:
若大于所述当前运行内存的空余值,则清理已占用运行内存,直至当前运行内存的空余值大于所述当前所需预留内存值,再分配所述当前所需预留内存值大小的运行内存给变更后的所述组件/应用程序,同时将所分配的运行内存设置为预留内存,并回收所述已分配预留内存。
7.根据权利要求4所述的内存管理方法,其特征在于,所述方法还包括:
若所述变更后的所述组件/应用程序当前所需预留内存值大于所述已分配预留内存值,则判断所述当前所需预留内存值与所述已分配预留内存值之间的差值是否小于或等于当前运行内存的空余值;
若小于或等于所述当前运行内存的空余值,则分配所述当前所需预留内存值与所述已分配预留内存值之间的差值大小的运行内存给变更后的所述组件/应用程序,且将所分配的运行内存设置为预留内存。
8.根据权利要求7所述的内存管理方法,其特征在于,所述方法还包括:
若大于所述当前运行内存的空余值,则清理已占用运行内存,直至当前运行内存的空余值大于所述当前所需预留内存值与所述已分配预留内存值之间的差值,再分配所述当前所需预留内存值与所述已分配预留内存值之间差值大小的运行内存给变更后的所述组件/应用程序,同时将所分配的运行内存设置为预留内存。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述处理器耦接所述存储器,所述存储器用于存储操作系统,所述处理器用于:
获取组件/应用程序当前所需预留内存值,所述预留内存是所述操作系统为所述组件/应用程序预留的不会被映射为运行内存的部分物理内存;
判断所述当前所需预留内存值是否小于已分配预留内存值,所述已分配预留内存值是所述操作系统为所述组件/应用程序分配的预留内存大小;
若小于所述已分配预留内存值,则回收多余的已分配预留内存,并将回收的预留内存作为运行内存再分配使用。
10.一种具有存储功能的装置,其特征在于,所述装置存储有程序,所述程序被执行时实现权利要求1-8任一项所述的内存管理方法。
CN201910009079.7A 2019-01-04 2019-01-04 一种内存管理方法、电子设备及存储装置 Active CN109753361B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910009079.7A CN109753361B (zh) 2019-01-04 2019-01-04 一种内存管理方法、电子设备及存储装置
US16/438,489 US20200218573A1 (en) 2019-01-04 2019-06-12 Memory management method, electronic apparatus, and storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910009079.7A CN109753361B (zh) 2019-01-04 2019-01-04 一种内存管理方法、电子设备及存储装置

Publications (2)

Publication Number Publication Date
CN109753361A true CN109753361A (zh) 2019-05-14
CN109753361B CN109753361B (zh) 2020-10-23

Family

ID=66405217

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910009079.7A Active CN109753361B (zh) 2019-01-04 2019-01-04 一种内存管理方法、电子设备及存储装置

Country Status (2)

Country Link
US (1) US20200218573A1 (zh)
CN (1) CN109753361B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111078407A (zh) * 2019-12-10 2020-04-28 Oppo(重庆)智能科技有限公司 内存管理的方法、装置、存储介质及电子设备
CN111143064A (zh) * 2019-12-25 2020-05-12 浙江中控技术股份有限公司 一种处理内存的方法及系统
CN112685371A (zh) * 2020-12-30 2021-04-20 江苏达科信息科技有限公司 基于大数据的文件存储空间分配方法、装置及存储介质
CN112764930A (zh) * 2021-01-22 2021-05-07 山东云海国创云计算装备产业创新中心有限公司 一种内存分配方法、装置、设备及计算机可读存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836507B2 (en) * 2020-06-18 2023-12-05 Dell Products L.P. Prioritizing the pre-loading of applications with a constrained memory budget using contextual information
US11442832B2 (en) * 2020-11-24 2022-09-13 Hewlett Packard Enterprise Development Lp Managing synchronized reboot of a system

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996258A (zh) * 2006-12-28 2007-07-11 武汉虹旭信息技术有限责任公司 一种动态内存池的实现方法
CN101739348A (zh) * 2008-11-26 2010-06-16 威刚科技股份有限公司 内存系统及其控制方法
CN101872307A (zh) * 2009-04-23 2010-10-27 鸿富锦精密工业(深圳)有限公司 内存优化使用方法
CN101937340A (zh) * 2009-06-29 2011-01-05 中兴通讯股份有限公司 使用补丁对软件进行动态升级与控制的方法和装置
US20110302360A1 (en) * 2006-10-19 2011-12-08 Jung-Been Im Methods and apparatus for reallocating addressable spaces within memory devices
CN101452379B (zh) * 2007-11-28 2012-05-23 无锡江南计算技术研究所 内存空间的分析方法和装置、检查点的保留方法和装置
CN103984570A (zh) * 2014-05-07 2014-08-13 珠海全志科技股份有限公司 嵌入式安卓系统的固件处理的方法及装置
CN105242981A (zh) * 2015-10-30 2016-01-13 浪潮电子信息产业股份有限公司 一种Kdump的配置方法及计算机设备
CN106909457A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 内存管理方法及装置
CN107797872A (zh) * 2016-09-07 2018-03-13 北京百度网讯科技有限公司 用于传输信息的方法和装置
CN108062247A (zh) * 2016-11-09 2018-05-22 腾讯科技(深圳)有限公司 一种内存管理方法及系统
CN109101589A (zh) * 2018-07-25 2018-12-28 青岛聚看云科技有限公司 一种自动调整内存数据库空间大小的方法、装置及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678681B2 (en) * 2015-06-17 2017-06-13 International Business Machines Corporation Secured multi-tenancy data in cloud-based storage environments

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110302360A1 (en) * 2006-10-19 2011-12-08 Jung-Been Im Methods and apparatus for reallocating addressable spaces within memory devices
CN1996258A (zh) * 2006-12-28 2007-07-11 武汉虹旭信息技术有限责任公司 一种动态内存池的实现方法
CN101452379B (zh) * 2007-11-28 2012-05-23 无锡江南计算技术研究所 内存空间的分析方法和装置、检查点的保留方法和装置
CN101739348A (zh) * 2008-11-26 2010-06-16 威刚科技股份有限公司 内存系统及其控制方法
CN101872307A (zh) * 2009-04-23 2010-10-27 鸿富锦精密工业(深圳)有限公司 内存优化使用方法
CN101937340A (zh) * 2009-06-29 2011-01-05 中兴通讯股份有限公司 使用补丁对软件进行动态升级与控制的方法和装置
CN103984570A (zh) * 2014-05-07 2014-08-13 珠海全志科技股份有限公司 嵌入式安卓系统的固件处理的方法及装置
CN105242981A (zh) * 2015-10-30 2016-01-13 浪潮电子信息产业股份有限公司 一种Kdump的配置方法及计算机设备
CN106909457A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 内存管理方法及装置
CN107797872A (zh) * 2016-09-07 2018-03-13 北京百度网讯科技有限公司 用于传输信息的方法和装置
CN108062247A (zh) * 2016-11-09 2018-05-22 腾讯科技(深圳)有限公司 一种内存管理方法及系统
CN109101589A (zh) * 2018-07-25 2018-12-28 青岛聚看云科技有限公司 一种自动调整内存数据库空间大小的方法、装置及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨新波: "多核系统内存管理算法的研究", 《万方数据库》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111078407A (zh) * 2019-12-10 2020-04-28 Oppo(重庆)智能科技有限公司 内存管理的方法、装置、存储介质及电子设备
CN111143064A (zh) * 2019-12-25 2020-05-12 浙江中控技术股份有限公司 一种处理内存的方法及系统
CN112685371A (zh) * 2020-12-30 2021-04-20 江苏达科信息科技有限公司 基于大数据的文件存储空间分配方法、装置及存储介质
CN112764930A (zh) * 2021-01-22 2021-05-07 山东云海国创云计算装备产业创新中心有限公司 一种内存分配方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
US20200218573A1 (en) 2020-07-09
CN109753361B (zh) 2020-10-23

Similar Documents

Publication Publication Date Title
CN109753361A (zh) 一种内存管理方法、电子设备及存储装置
CN109725846B (zh) 存储器系统及控制方法
US10114740B2 (en) Memory management techniques
US7363456B2 (en) System and method of allocating contiguous memory in a data processing system
CN108038002B (zh) 一种嵌入式软件内存管理方法
KR101357397B1 (ko) 데이터 프로세싱 시스템의 메모리 사용을 추적하는 방법
US7653799B2 (en) Method and apparatus for managing memory for dynamic promotion of virtual memory page sizes
CN102650931B (zh) 一种写入数据的方法及系统
US20110246742A1 (en) Memory pooling in segmented memory architecture
CN105988874B (zh) 资源处理方法及装置
CA2566681A1 (en) Dynamic memory management of unallocated memory in a legal partitioned data processing system
US20120303927A1 (en) Memory allocation using power-of-two block sizes
KR102077149B1 (ko) 메모리 관리 방법 및 장치
CN103577345A (zh) 提高由多个系统共享的存储高速缓存灵活性的方法和结构
US10824555B2 (en) Method and system for flash-aware heap memory management wherein responsive to a page fault, mapping a physical page (of a logical segment) that was previously reserved in response to another page fault for another page in the first logical segment
CN102004700A (zh) 闪存的存储空间分配方法及装置
US9454308B2 (en) Page compression strategy for improved page out process
CN112579251A (zh) 虚拟机内存管理的方法及设备
CN113204407A (zh) 一种内存超配管理方法及装置
CN111858363A (zh) 栈溢出的识别方法、装置、终端及存储介质
CN109766179B (zh) 一种显存分配方法以及装置
CN111522659B (zh) 一种空间使用方法和装置
US20100153678A1 (en) Memory management apparatus and method
CN109739688A (zh) 快照资源空间管理方法、装置、电子设备
CN113849311B (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