CN108255608A - 一种内存池的管理方法 - Google Patents

一种内存池的管理方法 Download PDF

Info

Publication number
CN108255608A
CN108255608A CN201810024399.5A CN201810024399A CN108255608A CN 108255608 A CN108255608 A CN 108255608A CN 201810024399 A CN201810024399 A CN 201810024399A CN 108255608 A CN108255608 A CN 108255608A
Authority
CN
China
Prior art keywords
memory
pool
memory pool
distribution
threshold
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
CN201810024399.5A
Other languages
English (en)
Other versions
CN108255608B (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.)
Beijing Shulian Zhihui Digital Technology Co ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810024399.5A priority Critical patent/CN108255608B/zh
Publication of CN108255608A publication Critical patent/CN108255608A/zh
Application granted granted Critical
Publication of CN108255608B publication Critical patent/CN108255608B/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种内存池的管理方法,该方法包括:控制第一内存池提供动态内存分配操作和内存释放操作,并且控制第二内存池不提供动态内存分配操作和内存释放操作;在第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制第一内存池仅提供内存释放操作,并且控制第二内存池提供动态内存分配操作和内存释放操作;在第一内存池的内存全部释放之后,清空第一内存池,以及控制第二内存池提供动态内存分配操作和内存释放操作,并且控制第一内存池不提供动态内存分配操作和内存释放操作。本发明解决了现有技术中存在的因内存池的chunk地址并非连续而无法释放整块block,导致内存占有量较高的技术问题,实现了将空闲内存自动回收的技术效果。

Description

一种内存池的管理方法
技术领域
本申请涉及计算机领域,尤其涉及一种内存池的管理方法。
背景技术
在进行服务器开发时,有时会遇到需要频繁申请释放内存的场景,如果每次都直接向操作系统申请,不仅会效率低下,而且会导致内存碎片,对此有不少库都实现了内存池,即向操作系统申请大块内存(block),再分成小块(chunk)进行管理,用户从内存池申请内存,释放时再还给内存池,内存池一直保留着大块内存,减少了和操作系统的交互,提高了动态内存分配的效率。
在实际应用中,内存池为了满足动态内存分配释放高效的特点,往往是用链表方式管理这些chunk,申请释放都从链表头进行操作,以达到O(1)的时间复杂度。但这样也导致一个问题,就是当服务非常繁忙时,可能向内存池申请大量内存,甚至到几G,而后续当服务趋近平缓之后会向内存池归还这些内存,由于内存池中的chunk地址并非连续,因此无法释放整块block,所以内存池往往不会将这些内存归还给操作系统,这会导致内存占用量一直在峰值水平。
因此,现有技术中存在因内存池的chunk地址并非连续而无法释放整块block,导致内存占有量较高的技术问题。
发明内容
本发明了提供了一种内存池的管理方法,以解决现有技术中存在的因内存池的chunk地址并非连续而无法释放整块block导致服务器的内存占有量较高的技术问题。
为解决上述技术问题,本发明实施例第一方面提供了一种内存池的管理方法,所述方法包括:
控制第一内存池提供动态内存分配操作和内存释放操作,并且控制第二内存池不提供动态内存分配操作和内存释放操作;
在所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制所述第一内存池仅提供内存释放操作,并且控制所述第二内存池提供动态内存分配操作和内存释放操作;
在所述第一内存池的内存全部释放之后,清空所述第一内存池,以及控制所述第二内存池提供动态内存分配操作和内存释放操作,并且控制所述第一内存池不提供动态内存分配操作和内存释放操作。
可选地,所述方法还包括:对所述第一内存池和所述第二内存池使用互斥锁。
可选地,所述控制第一内存池提供动态内存分配操作和内存释放操作,具体包括:
接收动态内存分配消息,获取当前负责动态内存分配的内存池为所述第一内存池;
基于所述动态内存分配消息,将所述第一内存池中的内存进行分配,并统计所述第一内存池的已分配内存和已使用内存;以及
接收内存释放消息,获取当前负责内存释放的内存池为所述第一内存池;
基于所述内存释放消息,调用所述第一内存池的内存释放函数释放内存。
可选地,所述在所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制所述第一内存池提供内存释放操作,并且控制所述第二内存池提供动态内存分配操作和内存释放操作,具体包括:
接收内存释放消息,获取所述当前仅负责内存释放的内存池为所述第一内存池;
判断所述内存释放消息对应的待释放内存是否属于所述第一内存池,若是,则调用所述第一内存池的内存释放函数,释放所述待释放内存,若不是,则调用所述第二内存池的内存是否函数,释放所述待释放内存;以及
接收动态内存分配消息,获取当前负责动态内存分配的内存池为所述第二内存池;
基于所述动态内存分配消息,将所述第二内存池中的内存进行分配,并统计所述第二内存池的已分配内存和已使用内存。
可选地,所述在所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制所述第一内存池提供内存释放操作,并且控制所述第二内存池提供动态内存分配操作和内存释放操作,具体包括:
接收内存释放消息,判断所述内存释放消息对应的待释放内存属于所述第一内存池或所述第二内存池;
若所述待释放内存属于所述第一内存池,调用所述第一内存池的内存释放函数,释放所述待释放内存;或者
若所述待释放内存属于所述第一内存池,调用所述第二内存池的内存释放函数,释放所述待释放内存;以及
接收动态内存分配消息,获取当前负责动态内存分配的内存池为所述第二内存池;
基于所述动态内存分配消息,将所述第二内存池中的内存进行分配,并统计所述第二内存池的已分配内存和已使用内存。
可选地,所述在所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,所述控制所述第一内存池提供内存释放操作,并且控制所述第二内存池提供动态内存分配操作和内存释放操作之前,所述方法还包括:
监测所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值的持续时间;
若所述持续时间大于第三阈值,才执行步骤:控制所述第一内存池提供内存释放操作,并且控制所述第二内存池提供动态内存分配操作和内存释放操作。
可选地,在所述监测所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值的持续时间之后,所述方法还包括:在任意时刻,若监测到所述已分配内存小于所述第一阈值或所述已使用内存大于所述第二阈值时,将所述持续时间清零。
本发明实施例第二方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所介绍方法的步骤。
本发明实施例第三方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所介绍方法的步骤
通过本发明的一个或者多个技术方案,本发明具有以下有益效果或者优点:
由于本发明实施例提供的管理方法采用了两个内存池,并且在第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制第一内存池仅提供内存释放操作,并且控制第二内存池提供动态内存分配操作和内存释放操作,这样第一内存池即能够一直处于内存释放的状态而不会再进行动态内存分配,便于第一内存池的内存被全部释放,在第一内存池的内存全部释放之后,清空第一内存池,以及控制第二内存池提供动态内存分配操作和内存释放操作,并且控制第一内存池不提供动态内存分配操作和内存释放操作,这样即能够将第一内存池完全归还给操作系统,解决了现有技术中存在的因内存池的chunk地址并非连续而无法释放整块block,导致内存占有量较高的技术问题,降低了内存占有量,实现了将空闲内存自动回收的技术效果。
附图说明
图1本发明实施例提供的内存池的管理方法的流程图;
图2A-图2D为本发明实施例提供的内存池的迁移示意图。
具体实施方式
为了使本申请所属技术领域中的技术人员更清楚地理解本申请,下面结合附图,通过具体实施例对本申请技术方案作详细描述。
本发明了提供了一种内存池的管理方法,以解决现有技术中存在的因内存池的chunk地址并非连续而无法释放整块block导致服务器的内存占有量较高的技术问题。
请参考图1,图1为本发明实施例提供的内存池的管理方法的流程图,该管理方法包括:
S1:控制第一内存池提供动态内存分配操作和内存释放操作,并且控制第二内存池不提供动态内存分配操作和内存释放操作;
S2:在第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制第一内存池仅提供内存释放操作,并且控制第二内存池提供动态内存分配操作和内存释放操作;
S3:在第一内存池的内存全部释放之后,清空第一内存池,以及控制第二内存池提供动态内存分配操作和内存释放操作,并且控制第一内存池不提供动态内存分配操作和内存释放操作。
可以看出,由于本发明实施例提供的管理方法采用了两个内存池,并且在第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制第一内存池仅提供内存释放操作,并且控制第二内存池提供动态内存分配操作和内存释放操作,这样第一内存池即能够一直处于内存释放的状态而不会再进行动态内存分配,便于第一内存池的内存被全部释放,在第一内存池的内存全部释放之后,清空第一内存池,以及控制第二内存池提供动态内存分配操作和内存释放操作,并且控制第一内存池不提供动态内存分配操作和内存释放操作,这样即能够将第一内存池完全归还给操作系统,解决了现有技术中存在的因内存池的chunk地址并非连续而无法释放整块block,导致内存占有量较高的技术问题,降低了内存占有量,实现了将空闲内存自动回收的技术效果。
在具体介绍本发明实施例提供的内存池的管理方法之前,先介绍一下内存池的使用具有如下两个特点:(1)用户每次申请的内存都是固定大小;(2)用户不会一直持有内存,即向内存池申请的内存在一定时间之后一定会释放。这也是本发明实施例提供的内存池的管理方法的两个前提,针对第一点,操作系统已经提供了可以分配任意内存的内存管理器,内存池不是要替代操作系统,而是针对特定场景进行优化,所以它只解决固定大小内存的申请问题;针对第二点,如果用户持有内存不释放,这违背了内存池解决频繁申请释放内存的场景,这时根本无需使用内存池,直接向操作系统申请即可。
在介绍完本发明实施例提供的内存管理方法的前提之后,在接下来的部分中,将结合具体附图,来详细介绍本发明实施例中的技术方案。
在具体实施过程中,由于使用了第一内存池和第二内存池,所以为了避免进行动态内存分配操作或内存释放操作时出现混乱,需要对两个内存池使用互斥锁。
具体可以通过如下代码实现:
请继续参考图2A-图2D,图2A-图2D为本发明实施例提供的内存池的迁移示意图,需要说明的是,如图2A-图2D所示,第一内存池为storage【0】、第二内存池为storage【1】,第一阈值为MigratingSize,第二阈值为MigratingUsedSize,动态内存分配操作为malloc,内存释放操作为free,current_used_size为已使用内存,max_used_size为已分配内存,另外,由第一内存池提供动态内存分配操作和内存释放操作,逐步变化为由第二内存池提供动态内存分配操作和内存释放操作,这一过程被称为迁移(migrate)。
在S1中,具体来讲,请参考图2A,此时第一内存池和第二内存池处于初始状态,控制第一内存池提供动态内存分配操作和内存释放操作,并且控制第二内存池不提供动态内存分配操作和内存释放操作。
在具体实施过程中,控制第一内存池提供动态内存分配操作和内存释放操作具体可以是接收动态内存分配消息,获取当前负责动态内存分配的内存池为第一内存池;基于动态内存分配消息,将第一内存池中的内存进行分配,并统计第一内存池的已分配内存和已使用内存;以及接收内存释放消息,获取当前负责内存释放的内存池为第一内存池;基于内存释放消息,调用第一内存池的内存释放函数释放内存。其中,动态内存分配消息可以由实际需要的服务或者应用程序发送,内存释放消息可以是由这些服务或者应用程序无需在使用内存之后发送,在此就不再赘述。
请继续参考图2B,随着第一内存池根据内存分配消息不断分配内存,这时,current_used_size超过了MigratingSize,也即已分配内存和已使用内存均大于第一阈值,此时仍然是控制第一内存池提供动态内存分配操作和内存释放操作,并且控制第二内存池不提供动态内存分配操作和内存释放操作。
在S2中,请继续参考图2C,随着第一内存池的内存不断被归还,current_used_size会逐渐降低直到低于MigratingUsedSize,也即已使用内存小于第二阈值,同时由于max_used_size大于MigratingSize,也即已分配内存大于第一值,这样,在第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值的时候,即能够控制第一内存池仅提供内存释放操作,并且控制第二内存池提供动态内存分配操作和内存释放操作,此时,也即第一内存池处于迁移状态。
在具体实施过程中,在接收到内存释放消息后,可以通过如下两种方式来释放该内存释放消息对应的内存:
第一种:接收内存释放消息,获取当前仅负责内存释放的内存池为第一内存池,具体可以通过get_free_only_pool这一方法来获取当前仅负责释放内存的内存池,当然,在本实施例中,当前仅负责释放内存的内存池为第一内存池,然后判断该内存释放消息对应的待释放内存是否属于第一内存池,若是,则调用第一内存池的内存释放函数来释放该待释放内存,若不是,则表明该内存释放消息对应的内存属于第二内存池,此时即可以调用第二内存池的内存释放函数来释放该待释放内存;
第二种:接收内存释放消息,判断该内存释放消息对应的待释放内存属于第一内存池还是第二内存池,若该待释放内存属于第一内存池,则调用第一内存池的内存释放函数,来释放该待释放内存,若该待释放内存属于第二内存池,则调用第二内存池释放的内存释放函数,来释放该待释放内存。
在实际应用中,可以通过如下的方式来释放内存:
当然了,根据内存分配消息将第二内存池中的内存进行分配的具体过程,与前述部分介绍的根据内存分配消息将第一内存池中的内存进行分配的过程一致,在此就不再赘述了。
在具体实施过程中,为了避免内存池申请大量内存又立马全部释放导致迁移操作过于频繁而影响内存池的性能,本发明实施例提供的内存池的管理方法第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制第一内存池提供内存释放操作,并且控制第二内存池提供动态内存分配操作和内存释放操作之前,还包括:
监测第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值的持续时间;若持续时间大于第三阈值,才执行步骤:控制第一内存池提供内存释放操作,并且控制第二内存池提供动态内存分配操作和内存释放操作。
在监测第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值的持续时间之后,本发明实施例提供的内存池的管理方法还包括:在任意时刻,若监测到已分配内存小于第一阈值或已使用内存大于第二阈值时,将持续时间清零。这样,保证在频繁申请释放大量内存的场景下,最大程度复用现有pool,只有当系统不再繁忙时才真正释放底层pool,因此也不会阻塞业务层操作。
请继续参考图2D,由于第一内存池的内存会被继续归还,并且不会再将第一内存池中的内存进行分配,所以第一内存池中的内存会在某一时刻被全部归还,这样,在第一内存池中的内存被全部归还后,即可以清空第一内存池,这样,storage【0】中的内存能够重新被操作系统重新进行分配,相当于实现了自动回收storage【0】中的内存的目的。
在具体实施过程中,为了增加内存池的易用性和对用户保持透明,内存池接口设计如下:
其中模板参数含义如下
Tag:内存池对象唯一标识,通过不同的Tag可以实例化不同对象
RequestedSize:每次请求的内存大小
NextSize:初次申请block时包含的chunk数量,后续每次新申请数量会乘2
MaxSize:申请新block时包含的最大chunk数量,为0则代表无上限
以上参数均和boost::singleton_pool相同,另外还有三个参数
MigratingSize:用户申请的内存峰值超过该值触发内存池迁移条件1
MigratingUsedSize:用户当前使用内存小于该值触发内存迁移条件2
MigratingDelaySec:同时满足条件1和条件2,并持续该时间(单位秒),才真正触发内存迁移
基于同一发明构思,本发明实施例第二方面还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所介绍方法的步骤。
基于同一发明构思,本发明实施例第三方面还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现第一方面所介绍方法的步骤。
通过本发明的一个或者多个实施例,本发明具有以下有益效果或者优点:
由于本发明实施例提供的管理方法采用了两个内存池,并且在第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制第一内存池仅提供内存释放操作,并且控制第二内存池提供动态内存分配操作和内存释放操作,这样第一内存池即能够一直处于内存释放的状态而不会再进行动态内存分配,便于第一内存池的内存被全部释放,在第一内存池的内存全部释放之后,清空第一内存池,以及控制第二内存池提供动态内存分配操作和内存释放操作,并且控制第一内存池不提供动态内存分配操作和内存释放操作,这样即能够将第一内存池完全归还给操作系统,解决了现有技术中存在的因内存池的chunk地址并非连续而无法释放整块block,导致内存占有量较高的技术问题,降低了内存占有量,实现了将空闲内存自动回收的技术效果。
尽管已描述了本申请的优选实施例,但本领域内的普通技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (9)

1.一种内存池的管理方法,其特征在于,所述方法包括:
控制第一内存池提供动态内存分配操作和内存释放操作,并且控制第二内存池不提供动态内存分配操作和内存释放操作;
在所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制所述第一内存池仅提供内存释放操作,并且控制所述第二内存池提供动态内存分配操作和内存释放操作;
在所述第一内存池的内存全部释放之后,清空所述第一内存池,以及控制所述第二内存池提供动态内存分配操作和内存释放操作,并且控制所述第一内存池不提供动态内存分配操作和内存释放操作。
2.如权利要求1所述的管理方法,其特征在于,所述方法还包括:对所述第一内存池和所述第二内存池使用互斥锁。
3.如权利要求1所述的管理方法,其特征在于,所述控制第一内存池提供动态内存分配操作和内存释放操作,具体包括:
接收动态内存分配消息,获取当前负责动态内存分配的内存池为所述第一内存池;
基于所述动态内存分配消息,将所述第一内存池中的内存进行分配,并统计所述第一内存池的已分配内存和已使用内存;以及
接收内存释放消息,获取当前负责内存释放的内存池为所述第一内存池;
基于所述内存释放消息,调用所述第一内存池的内存释放函数释放内存。
4.如权利要求1所述的管理方法,其特征在于,所述在所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制所述第一内存池提供内存释放操作,并且控制所述第二内存池提供动态内存分配操作和内存释放操作,具体包括:
接收内存释放消息,获取所述当前仅负责内存释放的内存池为所述第一内存池;
判断所述内存释放消息对应的待释放内存是否属于所述第一内存池,若是,则调用所述第一内存池的内存释放函数,释放所述待释放内存,若不是,则调用所述第二内存池的内存是否函数,释放所述待释放内存;以及
接收动态内存分配消息,获取当前负责动态内存分配的内存池为所述第二内存池;
基于所述动态内存分配消息,将所述第二内存池中的内存进行分配,并统计所述第二内存池的已分配内存和已使用内存。
5.如权利要求1所述的管理方法,其特征在于,所述在所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,控制所述第一内存池提供内存释放操作,并且控制所述第二内存池提供动态内存分配操作和内存释放操作,具体包括:
接收内存释放消息,判断所述内存释放消息对应的待释放内存属于所述第一内存池或所述第二内存池;
若所述待释放内存属于所述第一内存池,调用所述第一内存池的内存释放函数,释放所述待释放内存;或者
若所述待释放内存属于所述第一内存池,调用所述第二内存池的内存释放函数,释放所述待释放内存;以及
接收动态内存分配消息,获取当前负责动态内存分配的内存池为所述第二内存池;
基于所述动态内存分配消息,将所述第二内存池中的内存进行分配,并统计所述第二内存池的已分配内存和已使用内存。
6.如权利要求1所述的管理方法,其特征在于,所述在所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值时,所述控制所述第一内存池提供内存释放操作,并且控制所述第二内存池提供动态内存分配操作和内存释放操作之前,所述方法还包括:
监测所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值的持续时间;
若所述持续时间大于第三阈值,才执行步骤:控制所述第一内存池提供内存释放操作,并且控制所述第二内存池提供动态内存分配操作和内存释放操作。
7.如权利要求6所述的管理方法,其特征在于,在所述监测所述第一内存池的已分配内存大于第一阈值且已使用内存小于第二阈值的持续时间之后,所述方法还包括:在任意时刻,若监测到所述已分配内存小于所述第一阈值或所述已使用内存大于所述第二阈值时,将所述持续时间清零。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7任一项所述方法的步骤。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-7任一项所述方法的步骤。
CN201810024399.5A 2018-01-10 2018-01-10 一种内存池的管理方法 Active CN108255608B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810024399.5A CN108255608B (zh) 2018-01-10 2018-01-10 一种内存池的管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810024399.5A CN108255608B (zh) 2018-01-10 2018-01-10 一种内存池的管理方法

Publications (2)

Publication Number Publication Date
CN108255608A true CN108255608A (zh) 2018-07-06
CN108255608B CN108255608B (zh) 2020-07-31

Family

ID=62724949

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810024399.5A Active CN108255608B (zh) 2018-01-10 2018-01-10 一种内存池的管理方法

Country Status (1)

Country Link
CN (1) CN108255608B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984427A (zh) * 2018-07-12 2018-12-11 北京中科网威信息技术有限公司 一种基于申威架构的设备中内存的处理方法及装置
CN112181663A (zh) * 2020-10-15 2021-01-05 新华三大数据技术有限公司 一种内存调度方法、装置及计算机设备
WO2021232386A1 (zh) * 2020-05-22 2021-11-25 华为技术有限公司 动态管理共享内存池的方法和装置
CN113986559A (zh) * 2021-12-24 2022-01-28 荣耀终端有限公司 内存管理方法和相关装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101266575A (zh) * 2007-03-13 2008-09-17 中兴通讯股份有限公司 一种提高内存池利用率的方法
CN101286878A (zh) * 2008-04-22 2008-10-15 中兴通讯股份有限公司 一种终端的内存池的管理方法
CN101303666A (zh) * 2008-06-25 2008-11-12 北京中星微电子有限公司 一种嵌入式系统中内存资源的使用方法及装置
CN101329655A (zh) * 2008-07-31 2008-12-24 北京天碁科技有限公司 一种内存管理方法和内存管理装置
US20100082900A1 (en) * 2008-10-01 2010-04-01 Hitachi, Ltd. Management device for storage device
CN105302738A (zh) * 2015-12-09 2016-02-03 北京东土科技股份有限公司 一种内存分配方法及装置
CN105528304A (zh) * 2015-12-03 2016-04-27 盛趣信息技术(上海)有限公司 内存池管理方法
CN106155917A (zh) * 2015-04-28 2016-11-23 北京信威通信技术股份有限公司 内存管理方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101266575A (zh) * 2007-03-13 2008-09-17 中兴通讯股份有限公司 一种提高内存池利用率的方法
CN101286878A (zh) * 2008-04-22 2008-10-15 中兴通讯股份有限公司 一种终端的内存池的管理方法
CN101303666A (zh) * 2008-06-25 2008-11-12 北京中星微电子有限公司 一种嵌入式系统中内存资源的使用方法及装置
CN101329655A (zh) * 2008-07-31 2008-12-24 北京天碁科技有限公司 一种内存管理方法和内存管理装置
US20100082900A1 (en) * 2008-10-01 2010-04-01 Hitachi, Ltd. Management device for storage device
CN106155917A (zh) * 2015-04-28 2016-11-23 北京信威通信技术股份有限公司 内存管理方法及装置
CN105528304A (zh) * 2015-12-03 2016-04-27 盛趣信息技术(上海)有限公司 内存池管理方法
CN105302738A (zh) * 2015-12-09 2016-02-03 北京东土科技股份有限公司 一种内存分配方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108984427A (zh) * 2018-07-12 2018-12-11 北京中科网威信息技术有限公司 一种基于申威架构的设备中内存的处理方法及装置
WO2021232386A1 (zh) * 2020-05-22 2021-11-25 华为技术有限公司 动态管理共享内存池的方法和装置
CN112181663A (zh) * 2020-10-15 2021-01-05 新华三大数据技术有限公司 一种内存调度方法、装置及计算机设备
CN113986559A (zh) * 2021-12-24 2022-01-28 荣耀终端有限公司 内存管理方法和相关装置

Also Published As

Publication number Publication date
CN108255608B (zh) 2020-07-31

Similar Documents

Publication Publication Date Title
CN108255608A (zh) 一种内存池的管理方法
CN108829352B (zh) 一种分布式存储系统的用户配额方法及系统
CN106330770A (zh) 一种共享缓存分配方法及装置
CN104601680B (zh) 一种资源管理方法及装置
CN109542331A (zh) 存储器系统及控制非易失性存储器的控制方法
CN104619029B (zh) 一种集中式蜂窝网络架构下的基带池资源分配方法和装置
CN105847385B (zh) 一种基于运行时长的云计算平台虚拟机调度方法
CN106844050A (zh) 一种内存分配方法及装置
CN106294198B (zh) 一种Linux操作系统的内存分配方法及释放方法
CN110297698A (zh) 一种多优先级动态限流方法、装置、服务器及存储介质
CN108055701A (zh) 一种资源调度方法及基站
CN111857992A (zh) 一种Radosgw模块中线程资源分配方法和装置
CN108595259A (zh) 一种基于全局管理的内存池管理方法
CN106936931A (zh) 分布式锁的实现方法、相关设备及系统
CN109428735B (zh) 计费方法和计费系统
CN110007867A (zh) 一种缓存空间分配方法、装置、设备及存储介质
CN116662020A (zh) 应用服务动态管理方法、系统、电子设备及存储介质
CN106502591B (zh) 一种基于混合存储产品的存储控制方法和存储控制装置
CN108563504A (zh) 一种资源管控方法和装置
CN106681692A (zh) 控制装置、集成电路及任务栈的管理方法
CN109522113B (zh) 一种内存管理方法及装置
CN100452761C (zh) 通信设备中数据包的存储方法
CN114866529A (zh) 基于rdma的通信方法、装置、设备以及存储介质
CN103607480B (zh) 一种内存资源的管理方法、装置及单板
CN101237417A (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
TR01 Transfer of patent right

Effective date of registration: 20240716

Address after: 909-174, 9th floor, Building 17, No. 30 Shixing Street, Shijingshan District, Beijing, 100043 (cluster registration)

Patentee after: Beijing Shulian Zhihui Digital Technology Co.,Ltd.

Country or region after: China

Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

Country or region before: China