CN109271248A - 内存处理方法及装置 - Google Patents
内存处理方法及装置 Download PDFInfo
- Publication number
- CN109271248A CN109271248A CN201710582095.6A CN201710582095A CN109271248A CN 109271248 A CN109271248 A CN 109271248A CN 201710582095 A CN201710582095 A CN 201710582095A CN 109271248 A CN109271248 A CN 109271248A
- Authority
- CN
- China
- Prior art keywords
- memory
- internal storage
- storage location
- operating system
- application
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Memory System (AREA)
Abstract
本发明实施例提供一种内存处理方法及装置,其中,该方法包括:接收操作系统分配的内存块,并对所述内存块的内存空间进行分割,形成多个内存单元;将所述多个内存单元的地址和空间大小,存储在预设的内存栈中;当接收到应用程序的内存申请时,将所述内存栈中存储的目标地址导出给所述应用程序,其中,所述目标地址所对应的内存单元的空间大小大于或等于所述应用程序所申请的内存大小。本发明实施例提供的方法及装置,能够降低应用程序直接向操作系统申请或释放内存的次数,从而提高了操作系统的运行效率,缓解了因为频繁向操作系统申请内存、释放内存而导致的内存碎片化的问题。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种内存处理方法及装置。
背景技术
内存管理是系统设计中最重要和最复杂的内容之一。虽然计算机硬件一直在飞速发展,内存容量也在不断增长,但是仍然不可能将所有用户数据放入主存中,所以必须将内存空间进行合理地划分和有效地动态分配。
然而,在现有技术中,应用程序在运行时是需要频繁的向操作系统申请内存并释放内存的,这就对操作系统的运行效率造成了影响,并且频繁的向操作系统申请内存、释放内存,也容易使得操作系统产生内存碎片。
发明内容
本发明实施例提供一种内存处理方法及装置,用以降低应用程序直接向操作系统申请内存的次数,提高操作系统的运行效率,缓解因为频繁向操作系统申请内存而导致的内存碎片化的问题。
本发明实施例第一方面提供一种内存处理方法,该方法包括:
接收操作系统分配的内存块,并对所述内存块的内存空间进行分割,形成多个内存单元;
将所述多个内存单元的地址和空间大小,存储在预设的内存栈中;
当接收到应用程序的内存申请时,将所述内存栈中存储的目标地址导出给所述应用程序,其中,所述目标地址所对应的内存单元的空间大小大于或等于所述应用程序所申请的内存大小。
本发明实施例第二方面提供一种内存处理装置,该装置包括:
接收模块,用于接收操作系统分配的内存块;
处理模块,用于对所述内存块的内存空间进行分割,形成多个内存单元;
存储模块,用于将所述多个内存单元的地址和空间大小,存储在预设的内存栈中;
导出模块,用于在接收到应用程序的内存申请时,将所述内存栈中存储的目标地址导出给所述应用程序,其中,所述目标地址所对应的内存单元的空间大小大于或等于所述应用程序所申请的内存大小。
本发明实施例,通过对操作系统分配的内存块进行分割形成多个内存单元,并将多个内存单元的地址和空间大小存储在预设的内存栈,当应用程序申请内存时,将内存栈中的对应存储空间大于或等于申请空间的目标地址导出给应用程序,以使应用程序根据目标地址调用相应的内存单元。由于本发明实施例是通过内存栈为应用程序分配内存的,因而在内存栈能够满足应用程序的内存申请时,是不需要向操作系统申请内存的,进而降低了向操作系统申请内存的频率,提高了操作系统的运行效率,缓解了因为频繁向操作系统申请内存而导致的内存碎片化的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种内存处理方法的流程图;
图2为本发明另一实施例提供的一种内存处理方法的流程图;
图3为本发明一实施例提供的一种内存处理装置的结构示意图;
图4为本发明另一实施例提供的一种内存处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤的过程或结构的装置不必限于清楚地列出的那些结构或步骤而是可包括没有清楚地列出的或对于这些过程或装置固有的其它步骤或结构。
本发明实施例提供一种内存处理方法,该方法由一种内存处理装置来执行,该装置设置在计算机中。参见图1,图1是本发明一实施例提供的一种内存处理方法的流程图,如图1所示,该方法包括如下步骤:
步骤101、接收操作系统分配的内存块,并对所述内存块的内存空间进行分割,形成多个内存单元。
可选的,本实施例中所称的操作系统为计算机的操作系统。
可选的,本实施例中,操作系统分配给内存处理装置的内存块为一个或多个。
接收到操作系统分配的内存块后,内存处理装置分别对每个内存块进行分割。分割的策略可以是预先设定的。比如,接收到内存块A包括10G空间,则根据预先设定的策略可以将内存块A分割为10个1G的内存单元,也可以将内存块A分割为1个5G的内存单元和5个1G的内存单元。当然此处仅为示例说明而不是对本发明的唯一限定。
步骤102、将所述多个内存单元的地址和空间大小,存储在预设的内存栈中。
可选的,本实施例中,可以将由一个内存块分割出的内存单元的地址和空间大小存储在一个内存栈中。也可以将不同内存块分割出的,但具有相同存储空间的内存单元的地址和空间大小存储在一个内存栈中。
步骤103、当接收到应用程序的内存申请时,将所述内存栈中存储的目标地址导出给所述应用程序,其中,所述目标地址所对应的内存单元的空间大小大于或等于所述应用程序所申请的内存大小。
实际应用中,应用程序直接向内存处理装置申请内存,内存处理装置在接收到应用程序的内存申请时,内存处理装置在内存栈中查找存储空间满足要求的内存单元的地址(即目标地址),并将该地址发送给应用程序,以使应用程序根据该地址调用相应的内存单元。
具体的,当一个内存栈中只存储一个内存块分割出的内存单元的地址和空间大小时,遍历每个内存栈,将存储空间满足要求的内存单元的地址发送给应用程序。当一个内存栈中只存储具有相同存储空间大小的内存单元的地址时,首先确定各内存栈存储的是多大存储空间的内存单元的地址,再根据先入先出的原则,从满足要求的内存栈中导出地址。
可选的,若内存栈中没有存储空间满足要求的内存单元的地址,则将应用程序的内存申请转发给操作系统,以使操作系统为应用程序分配内存。
可选的,为了避免对内存资源造成浪费,内存处理装置在将内存单元分配给应用程序之后,对内存单元的使用情况进行监督,当发现内存单元未被使用的时间超过预设时间长度时,对该内存单元的数据进行释放,并在释放后,将内存单元的地址重新存储在相应的内存栈中。
本实施例,通过对操作系统分配的内存块进行分割形成多个内存单元,并将多个内存单元的地址和空间大小存储在预设的内存栈,当应用程序申请内存时,将内存栈中的对应存储空间大于或等于申请空间的目标地址导出给应用程序,以使应用程序根据目标地址调用相应的内存单元。由于本实施例是通过内存栈为应用程序分配内存的,因而在内存栈能够满足应用程序的内存申请时,是不需要向操作系统申请内存的,进而降低了向操作系统申请内存的频率,提高了操作系统的运行效率,缓解了因为频繁向操作系统申请内存而导致的内存碎片化的问题。
图2为本发明另一实施例提供的一种内存处理方法的流程图,如图2所示,在图1所示实施例的基础上,该方法包括如下步骤:
步骤201、根据预先设置的内存单元的大小和个数,计算目标存储空间的大小。
举例来说,假设预先设置的内存单元的大小为1G,个数为10个,则确定向操作系统申请包含10G存储空间的内存块。当然这里仅为示例说明,而不是对本申请的唯一限定。
步骤202、向操作系统申请包括所述目标存储空间的内存块。
步骤203、根据预先设置的内存单元的大小,对所述内存块进行分割,形成所述个数的内存单元。
承接上例,当操作系统分配下10G的内存块后,内存处理装置将该内存块分割为10个1G的内存单元,分别将10个内存单元的空间大小和地址存储在内存栈中。
步骤204、将所述多个内存单元的地址和空间大小,存储在预设的内存栈中。
步骤205、当接收到应用程序的内存申请时,将所述内存栈中存储的目标地址导出给所述应用程序,其中,所述目标地址所对应的内存单元的空间大小大于或等于所述应用程序所申请的内存大小。
本实施例,通过对操作系统分配的内存块进行分割形成多个内存单元,并将多个内存单元的地址和空间大小存储在预设的内存栈,当应用程序申请内存时,将内存栈中的对应存储空间大于或等于申请空间的目标地址导出给应用程序,以使应用程序根据目标地址调用相应的内存单元。由于本实施例是通过内存栈为应用程序分配内存的,因而在内存栈能够满足应用程序的内存申请时,是不需要向操作系统申请内存的,进而降低了向操作系统申请内存的频率,提高了操作系统的运行效率,缓解了因为频繁向操作系统申请内存而导致的内存碎片化的问题。
图3为本发明一实施例提供的一种内存处理装置的结构示意图,如图3所示,该装置包括:
接收模块11,用于接收操作系统分配的内存块;
处理模块12,用于对所述内存块的内存空间进行分割,形成多个内存单元;
存储模块13,用于将所述多个内存单元的地址和空间大小,存储在预设的内存栈中;
导出模块14,用于在接收到应用程序的内存申请时,将所述内存栈中存储的目标地址导出给所述应用程序,其中,所述目标地址所对应的内存单元的空间大小大于或等于所述应用程序所申请的内存大小。
可选的,述装置还包括:
转发模块,用于在所述内存栈中未存储所述目标地址时,将所述内存申请转发给所述操作系统,以使所述操作系统为所述应用程序分配内存。
可选的,所述存储模块,还用于在所述目标地址所对应的内存单元中的数据在预设时间长度内没有被使用时,对所述内存单元中的数据进行释放,并将所述目标地址重新存储在所述内存栈中将所述目标地址重新存储在所述内存栈中。
本实施例提供的装置能够用于执行图1所示的方法,其执行方式和有益效果类似,在这里不再赘述。
图4为本发明另一实施例提供的一种内存处理装置的结构示意图,如图4所示,在图3实施例的基础上,所述装置还包括:
计算模块15,用于根据预先设置的内存单元的大小和个数,计算目标存储空间的大小;
申请模块16,用于向操作系统申请包括所述目标存储空间的内存块;
所述处理模块12,具体用于根据预先设置的内存单元的大小,对所述内存块进行分割,形成所述个数的内存单元。
本实施例提供的装置能够用于执行图2所示的方法,其执行方式和有益效果类似,在这里不再赘述。
最后需要说明的是,本领域普通技术人员可以理解上述实施例方法中的全部或者部分流程,是可以通过计算机程序来指令相关的硬件完成,所述的程序可存储于一计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可以为磁盘、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。
本发明实施例中的各个功能单元可以集成在一个处理模块中,也可以是各个单元单独的物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现,并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。上述提到的存储介质可以是只读存储器、磁盘或光盘等。
以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种内存处理方法,其特征在于,包括:
接收操作系统分配的内存块,并对所述内存块的内存空间进行分割,形成多个内存单元;
将所述多个内存单元的地址和空间大小,存储在预设的内存栈中;
当接收到应用程序的内存申请时,将所述内存栈中存储的目标地址导出给所述应用程序,其中,所述目标地址所对应的内存单元的空间大小大于或等于所述应用程序所申请的内存大小。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述内存栈中未存储所述目标地址,则将所述内存申请转发给所述操作系统,以使所述操作系统为所述应用程序分配内存。
3.根据权利要求1所述的方法,其特征在于,所述将所述内存栈中存储的目标地址导出给所述应用程序之后,所述方法还包括:
若所述目标地址所对应的内存单元中的数据在预设时间长度内没有被使用,则对所述内存单元中的数据进行释放,并将所述目标地址重新存储在所述内存栈中。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述接收操作系统分配的内存块,并对所述内存块的内存空间进行分割,形成多个内存单元之前,所述方法包括:
根据预先设置的内存单元的大小和个数,计算目标存储空间的大小;
向操作系统申请包括所述目标存储空间的内存块;
所述接收操作系统分配的内存块,并对所述内存块的内存空间进行分割,形成多个内存单元,包括:
根据预先设置的内存单元的大小,对所述内存块进行分割,形成所述个数的内存单元。
5.一种内存处理装置,其特征在于,包括:
接收模块,用于接收操作系统分配的内存块;
处理模块,用于对所述内存块的内存空间进行分割,形成多个内存单元;
存储模块,用于将所述多个内存单元的地址和空间大小,存储在预设的内存栈中;
导出模块,用于在接收到应用程序的内存申请时,将所述内存栈中存储的目标地址导出给所述应用程序,其中,所述目标地址所对应的内存单元的空间大小大于或等于所述应用程序所申请的内存大小。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
转发模块,用于在所述内存栈中未存储所述目标地址时,将所述内存申请转发给所述操作系统,以使所述操作系统为所述应用程序分配内存。
7.根据权利要求5所述的装置,其特征在于,所述存储模块,还用于在所述目标地址所对应的内存单元中的数据在预设时间长度内没有被使用时,对所述内存单元中的数据进行释放,并将所述目标地址重新存储在所述内存栈中将所述目标地址重新存储在所述内存栈中。
8.根据权利要求5-7中任一项所述的装置,其特征在于,所述装置还包括:
计算模块,用于根据预先设置的内存单元的大小和个数,计算目标存储空间的大小;
申请模块,用于向操作系统申请包括所述目标存储空间的内存块;
所述处理模块,具体用于根据预先设置的内存单元的大小,对所述内存块进行分割,形成所述个数的内存单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710582095.6A CN109271248A (zh) | 2017-07-17 | 2017-07-17 | 内存处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710582095.6A CN109271248A (zh) | 2017-07-17 | 2017-07-17 | 内存处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109271248A true CN109271248A (zh) | 2019-01-25 |
Family
ID=65147907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710582095.6A Pending CN109271248A (zh) | 2017-07-17 | 2017-07-17 | 内存处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271248A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727517A (zh) * | 2019-10-12 | 2020-01-24 | 福建顶点软件股份有限公司 | 一种基于分区设计的内存分配方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804761B1 (en) * | 2000-01-21 | 2004-10-12 | Cisco Technology, Inc. | Memory allocation system and method |
CN101266575A (zh) * | 2007-03-13 | 2008-09-17 | 中兴通讯股份有限公司 | 一种提高内存池利用率的方法 |
CN101853215A (zh) * | 2010-06-01 | 2010-10-06 | 恒生电子股份有限公司 | 一种内存分配方法及装置 |
-
2017
- 2017-07-17 CN CN201710582095.6A patent/CN109271248A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804761B1 (en) * | 2000-01-21 | 2004-10-12 | Cisco Technology, Inc. | Memory allocation system and method |
CN101266575A (zh) * | 2007-03-13 | 2008-09-17 | 中兴通讯股份有限公司 | 一种提高内存池利用率的方法 |
CN101853215A (zh) * | 2010-06-01 | 2010-10-06 | 恒生电子股份有限公司 | 一种内存分配方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727517A (zh) * | 2019-10-12 | 2020-01-24 | 福建顶点软件股份有限公司 | 一种基于分区设计的内存分配方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101950273B (zh) | 一种dsp数据区动态管理方法 | |
CN108829610B (zh) | 一种神经网络前向计算过程中的内存管理方法及设备 | |
KR101775227B1 (ko) | 가상 머신들 사이에 서비스 체인 흐름 패킷들을 라우팅하기 위한 기술들 | |
CN110601922B (zh) | 一种对照实验的实现方法、装置、电子设备和存储介质 | |
CN102929707A (zh) | 并行任务动态分配方法 | |
CN106815254A (zh) | 一种数据处理方法和装置 | |
CN103631933A (zh) | 一种面向分布式去重系统的数据路由方法 | |
CN111475250B (zh) | 一种云环境下的网络优化方法和装置 | |
CN103942152B (zh) | 支持simd体系结构的分布式堆栈数据存储方法 | |
CN106502918A (zh) | 一种内存调度方法及装置 | |
CN104980515A (zh) | 一种云存储系统中消息分发处理方法和装置 | |
JP2021518957A (ja) | 清算・照合方法、装置及びコンピュータ機器 | |
CN104850505A (zh) | 基于链式堆叠的内存管理方法与系统 | |
CN109933430A (zh) | 分配图形处理器的方法和装置 | |
CN109271248A (zh) | 内存处理方法及装置 | |
CN111880926B (zh) | 一种负载均衡方法、装置及计算机存储介质 | |
CN108021448B (zh) | 一种内核空间的优化方法及装置 | |
CN103593606B (zh) | 上下文信息管理方法及系统 | |
CN114860460B (zh) | 一种数据库加速的方法、装置、计算机设备 | |
CN107977265A (zh) | 内存初始化方法、装置和内存分配方法、装置 | |
CN103942155B (zh) | 一种内存块控制方法及装置 | |
CN105912412A (zh) | 消息分发方法、装置及系统 | |
CN102262597B (zh) | 内存池管理方法和系统 | |
CN102063378B (zh) | 一种在内核中高速分配连续内存的方法 | |
CN110308914A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190125 |
|
WD01 | Invention patent application deemed withdrawn after publication |