System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及内存管理,并且更为具体地,涉及一种内存的管理方法及装置。
技术介绍
1、现有技术在应用程序运行的过程中,需要不断向操作系统发送内存的申请和释放请求,与操作系统交互过多,导致程序运行效率较低。
技术实现思路
1、本公开提供一种内存的管理方法及装置,以解决与操作系统交互过多所导致的程序运行效率较低的问题。同时,通过设计三级内存管理方法,实现应用程序多租户间、租户内模块间的内存隔离,便于精细化的控制和调优。
2、第一方面,提供一种内存的管理方法,所述方法包括:响应于应用程序发送的第一内存需求,为所述应用程序分配第一内存段,其中,所述第一内存段位于操作系统的用户空间的堆内存段中;响应于所述应用程序的第二内存需求,查找所述第一内存段中的空闲内存空间;当所述第一内存段中的空闲内存空间满足所述第二内存需求时,则从所述第一内存段中为所述应用程序分配其所需要的内存空间。
3、作为一种可能的实现方式,所述方法还包括:当所述第一内存段无可用内存空间或所述第一内存段中的空闲内存空间不满足所述第二内存需求时,响应于向所述操作系统发送的所述第二内存需求,为所述应用程序分配第二内存段,其中,所述第二内存段位于用户空间的堆内存段中。
4、作为一种可能的实现方式,所述为所述应用程序分配第二内存段,包括:若所述第一内存段和所述第二内存段的总内存空间满足预设条件,则对所述第一内存段的全部或部分内存进行释放;若所述第一内存段和所述第二内存段的总内存空间不满足预设条件,则为所述
5、作为一种可能的实现方式,所述预设条件为所述第一内存段和所述第二内存段的总内存空间超过所述应用程序可申请的内存上限。
6、作为一种可能的实现方式,所述方法还包括:响应于应用程序发送的内存释放请求,对所述第一内存段进行内存释放。
7、作为一种可能的实现方式,所述响应于应用程序发送的内存释放请求,对所述第一内存段进行内存释放,包括:获取所述应用程序可申请的剩余内存空间,所述剩余内存空间为可申请的内存上限与所述第一内存段的差值;响应于应用程序发送的内存释放请求,若所述剩余内存空间未超过所述第一内存段的内存空间,则对所述第一内存段进行内存释放。
8、作为一种可能的实现方式,所述方法还包括:响应于应用程序发送的内存释放请求,若所述剩余内存空间超过所述第一内存段的内存空间,则终止对所述第一内存段的内存释放,并缓存所述第一内存段。
9、作为一种可能的实现方式,所述当所述第一内存段中的空闲内存空间满足所述第二内存需求时,则从所述第一内存段中为所述应用程序分配其所需要的内存空间,包括:当所述第一内存段中的空闲内存空间满足所述第二内存需求时,则按照每个租户的内存需求从所述第一内存段中为所述每个租户分配租户级的内存空间。
10、第二方面,提供一种内存的管理装置,所述装置包括:第一分配模块,被配置为响应于应用程序发送的第一内存需求,为所述应用程序分配第一内存段,其中,所述第一内存段位于操作系统的用户空间的堆内存段中;查找模块,被配置为响应于所述应用程序的第二内存需求,查找所述第一内存段中的空闲内存空间;第二分配模块,被配置为当所述第一内存段中的空闲内存空间满足所述第二内存需求时,则从所述第一内存段中为所述应用程序分配其所需要的内存空间。
11、作为一种可能的实现方式,所述第二分配模块还用于:当所述第一内存段无可用内存空间或所述第一内存段中的空闲内存空间不满足所述第二内存需求时,为所述应用程序分配第二内存段,其中,所述第二内存段位于用户空间的堆内存段中。
12、作为一种可能的实现方式,所述第二分配模块还用于:若所述第一内存段和所述第二内存段的总内存空间满足预设条件,则对所述第一内存段的全部或部分内存进行释放;若所述第一内存段和所述第二内存段的总内存空间不满足预设条件,则为所述应用程序分配第二内存段。
13、作为一种可能的实现方式,所述预设条件为所述第一内存段和所述第二内存段的总内存空间超过所述应用程序可申请的内存上限。
14、作为一种可能的实现方式,所述装置还包括:释放模块,被配置为响应于应用程序发送的内存释放请求,对所述第一内存段进行内存释放。
15、作为一种可能的实现方式,所述释放模块用于:获取所述应用程序可申请的剩余内存空间,所述剩余内存空间为可申请的内存上限与所述第一内存段的差值;响应于应用程序发送的内存释放请求,若所述剩余内存空间未超过所述第一内存段的内存空间,则对所述第一内存段进行内存释放。
16、作为一种可能的实现方式,所述装置还包括:缓存模块,被配置为响应于应用程序发送的内存释放请求,若所述剩余内存空间超过所述第一内存段的内存空间,则终止对所述第一内存段的内存释放,并缓存所述第一内存段。
17、作为一种可能的实现方式,所述第二分配模块用于:当所述第一内存段中的空闲内存空间满足所述第二内存需求时,则按照每个租户的内存需求从所述第一内存段中为所述每个租户分配租户级的内存空间。
18、第三方面,提供一种内存的管理装置,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面或第一方面中任一实现方式所述的方法。
19、第四方面,提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面或第一方面中任一实现方式所述的方法。
20、第五方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面或第一方面中任一实现方式所述的方法。
21、本公开实施例提供了一种内存的管理方法,通过先申请一块具有较大内存空间的第一内存段,并对当前的内存申请进行管理,当第一内存段中的可用内存空间满足应用程序的当前内存需求时,可以直接从第一内存段中分配其所需要的内存空间,而不必向操作系统发出内存申请,从而降低了与操作系统的交互频率,提高了应用程序的运行效率。
本文档来自技高网...【技术保护点】
1.一种内存的管理方法,应用于内存管理系统,所述内存管理系统对外提供唯一的动态内存申请接口;所述方法包括:
2.根据权利要求1所述的方法,所述租户包括至少一个模块;
3.根据权利要求1所述的方法,所述方法还包括:
4.根据权利要求3所述的方法,所述为所述应用程序分配第二内存段,包括:
5.根据权利要求4所述的方法,所述方法还包括:
6.根据权利要求1所述的方法,从操作系统的用户空间的堆内存段中为所述应用程序分配第一内存段,包括:
7.根据权利要求2所述的方法,所述方法还包括:
8.根据权利要求7所述的方法,所述应用程序包括多个租户;
9.根据权利要求7所述的方法,对所述多个普通内存块进行链式管理,包括:
10.根据权利要求9所述的方法,按照所述应用程序的各个租户的内存需求从所述第一内存段中为各个租户分配租户级的内存空间,包括:
11.根据权利要求7所述的方法,所述租户包括多个模块;
12.根据权利要求11所述的方法,按照各个租户中的各个模块的内存需求
13.根据权利要求9所述的方法,所述方法还包括:
14.根据权利要求9所述的方法,
15.根据权利要求1所述的方法,所述动态内存申请接口为对操作系统的内存分配API进行封装得到的接口。
16.一种内存的管理装置,应用于内存管理系统,所述内存管理系统对外提供唯一的动态内存申请接口;所述装置包括:
17.一种内存管理系统,所述内存管理系统对外提供唯一的动态内存申请接口,包括:
18.根据权利要求17所述的系统,所述租户包括至少一个模块;
19.一种内存的管理装置,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器被配置为执行所述可执行代码,以实现权利要求1-15中任一项所述的方法。
...【技术特征摘要】
1.一种内存的管理方法,应用于内存管理系统,所述内存管理系统对外提供唯一的动态内存申请接口;所述方法包括:
2.根据权利要求1所述的方法,所述租户包括至少一个模块;
3.根据权利要求1所述的方法,所述方法还包括:
4.根据权利要求3所述的方法,所述为所述应用程序分配第二内存段,包括:
5.根据权利要求4所述的方法,所述方法还包括:
6.根据权利要求1所述的方法,从操作系统的用户空间的堆内存段中为所述应用程序分配第一内存段,包括:
7.根据权利要求2所述的方法,所述方法还包括:
8.根据权利要求7所述的方法,所述应用程序包括多个租户;
9.根据权利要求7所述的方法,对所述多个普通内存块进行链式管理,包括:
10.根据权利要求9所述的方法,按照所述应用程序的各个租户的内存需求从所述第一内存段中为各个租户分配租户级的内存空间,包括:
11.根据权利要求7所...
【专利技术属性】
技术研发人员:赵刚,倪佳,
申请(专利权)人:北京奥星贝斯科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。