一种内存分配监控方法、系统、介质及设备与流程

文档序号:24120342发布日期:2021-03-02 10:58阅读:74来源:国知局
一种内存分配监控方法、系统、介质及设备与流程

[0001]
本发明涉及分布式系统技术领域,尤其涉及一种内存分配监控方法、系统、介质及设备。


背景技术:

[0002]
目前分布式系统的应用范围越来越广,越来越多的应用场景开始使用分布式系统,包括云计算、存储业务、数据采集分析、媒体分流等场景;所以,内存分配监控显得尤为重要。
[0003]
在大数据时代,基于实现的内存分配监控功能,现有做法是:把分布式系统程序运行在内存监控工具系统中来跟踪内存占用情况,或者修改源码,并调用内存监控工具提供的接口以实现内存监控,通过特定工具进行内存占用展示;前者,分布式程序运行在内存监控系统中,严重影响分布式程序运行性能,性能衰减在50%以上;后者需要修改程序源码实现内存监控,对程序性能无影响,但只有内存占用总量,无法精细到每种数据类型的内存占用,无法精确进行内存优化,内存占用过高也会严重影响进程的稳定性和健壮性。


技术实现要素:

[0004]
有鉴于此,本发明的目的在于提出一种内存分配监控方法、系统、介质及设备,用以实现按数据类型统计内存占用情况从而监控内存的效果。
[0005]
基于上述目的,本发明一方面提供了内存分配监控方法,包括如下步骤:
[0006]
在内存分配接口中建立多个分别与不同的数据类型相对应的数据映射口;
[0007]
基于客户端程序的内存分配请求统计其各数据类型占用的第一内存量;
[0008]
基于内存分配请求的结果将所请求内存或错误信息返回到客户端程序,并基于第一内存量更新其各数据类型占用的第二内存量;
[0009]
基于客户端程序释放内存且基于第二内存量更新其各数据类型占用的第三内存量;
[0010]
将各数据类型占用的第三内存量分别存入其对应的数据映射口,得到各数据映射口的数据类型所占用的内存总量。
[0011]
在一些实施例中,基于客户端程序的内存分配请求统计其各数据类型占用的第一内存量包括:接收客户端程序的内存分配请求且解析其数据类型,并统计其各数据类型占用的第一内存量。
[0012]
在一些实施例中,基于内存分配请求的结果将所请求内存或错误信息返回到客户端程序,并基于第一内存量更新其各数据类型占用的第二内存量包括:若内存分配请求成功,将申请到的内存返回到客户端程序,使各数据类型占用的第二内存量等于其第一内存量;若内存分配请求失败,将错误信息返回到客户端程序,并基于第一内存量减去申请失败的内存的各数据类型对应的内存量,得到各数据类型占用的第二内存量。
[0013]
在一些实施例中,基于客户端程序释放内存且基于第二内存量更新其各数据类型
占用的第三内存量包括:接收客户端程序释放的内存并解析其数据类型,基于第二内存量减去其各数据类型对应的释放的内存量,得到各数据类型占用的第三内存量。
[0014]
在一些实施例中,将各数据类型占用的第三内存量分别存入其对应的数据映射口,得到各数据映射口的数据类型所占用的内存总量包括:将各数据类型占用的第三内存量分别累加到其对应的数据映射口的各初始内存量中,得到各数据映射口的数据类型所占用的内存总量。
[0015]
在一些实施例中,方法还包括:将各数据映射口的内存总量累积并存入内存分配接口,得到内存统计总量。
[0016]
在一些实施例中,数据类型包括整数类型和/或浮点数类型和/或字符类型和/或布尔类型。
[0017]
本发明的另一方面,还提供了一种内存分配监控系统,包括:
[0018]
数据映射口建立模块,配置用于在内存分配接口中建立多个分别与不同的数据类型相对应的数据映射口;
[0019]
第一内存量统计模块,配置用于基于客户端程序的内存分配请求统计其各数据类型占用的第一内存量;
[0020]
第二内存量统计模块,配置用于基于内存分配请求的结果将所请求内存或错误信息返回到客户端程序,并基于第一内存量更新其各数据类型占用的第二内存量;
[0021]
第三内存量统计模块,配置用于基于客户端程序释放内存且基于第二内存量更新其各数据类型占用的第三内存量;以及
[0022]
内存总量统计模块,配置用于将各数据类型占用的第三内存量分别存入其对应的数据映射口,得到各数据映射口的数据类型所占用的内存总量。
[0023]
本发明的又一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被执行时实现上述任意一项方法。
[0024]
本发明的再一方面,还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该计算机程序被该处理器执行时执行上述任意一项方法。
[0025]
本发明至少具有以下有益技术效果:
[0026]
本发明通过建立数据映射口,采集各数据类型的内存申请量和内存释放量,得到内存总量,实现了按数据类型统计内存占用情况,且达到动态监控内存占用情况的效果,为程序优化和定位内存泄漏提供参考,提升了程序的稳定性和健壮性。
附图说明
[0027]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
[0028]
图1为根据本发明提供的内存分配监控方法的实施例的示意图;
[0029]
图2为根据本发明提供的内存分配监控系统的实施例的示意图;
[0030]
图3为根据本发明提供的执行内存分配监控方法的计算机设备的一个实施例的硬件结构示意图。
具体实施方式
[0031]
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
[0032]
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。
[0033]
基于上述目的,本发明实施例的第一个方面,提出了内存分配监控方法的实施例。图1示出的是本发明提供的内存分配监控方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:
[0034]
步骤s10、在内存分配接口中建立多个分别与不同的数据类型相对应的数据映射口;
[0035]
步骤s20、基于客户端程序的内存分配请求统计其各数据类型占用的第一内存量;
[0036]
步骤s30、基于内存分配请求的结果将所请求内存或错误信息返回到客户端程序,并基于第一内存量更新其各数据类型占用的第二内存量;
[0037]
步骤s40、基于客户端程序释放内存且基于第二内存量更新其各数据类型占用的第三内存量;
[0038]
步骤s50、将各数据类型占用的第三内存量分别存入其对应的数据映射口,得到各数据映射口的数据类型所占用的内存总量。
[0039]
本发明实施例通过建立数据映射口,采集各数据类型的内存申请量和内存释放量,得到内存总量,实现了按数据类型统计内存占用情况,且达到动态监控内存占用情况的效果,为程序优化和定位内存泄漏提供参考,提升了程序的稳定性和健壮性。
[0040]
在一些实施例中,基于客户端程序的内存分配请求统计其各数据类型占用的第一内存量包括:接收客户端程序的内存分配请求且解析其数据类型,并统计其各数据类型占用的第一内存量。
[0041]
在一些实施例中,基于内存分配请求的结果将所请求内存或错误信息返回到客户端程序,并基于第一内存量更新其各数据类型占用的第二内存量包括:若内存分配请求成功,将申请到的内存返回到客户端程序,使各数据类型占用的第二内存量等于其第一内存量;若内存分配请求失败,将错误信息返回到客户端程序,并基于第一内存量减去申请失败的内存的各数据类型对应的内存量,得到各数据类型占用的第二内存量。本实施例中,申请失败的内存的各数据类型对应的内存量小于等于第一内存量。
[0042]
在一些实施例中,基于客户端程序释放内存且基于第二内存量更新其各数据类型占用的第三内存量包括:接收客户端程序释放的内存并解析其数据类型,基于第二内存量减去其各数据类型对应的释放的内存量,得到各数据类型占用的第三内存量。本实施例是基于上述实施例的内存分配请求成功后,客户端程序申请到了内存,后续不需要内存时便释放内存,然后得到第三内存量。
[0043]
在一些实施例中,将各数据类型占用的第三内存量分别存入其对应的数据映射口,得到各数据映射口的数据类型所占用的内存总量包括:将各数据类型占用的第三内存
量分别累加到其对应的数据映射口的各初始内存量中,得到各数据映射口的数据类型所占用的内存总量。由此,本实施例实现了统计各数据类型占用的内存总量的功能。
[0044]
在一些实施例中,方法还包括:将各数据映射口的内存总量累积并存入内存分配接口,得到内存统计总量。由此,本发明实施例既可以统计各数据类型占用的内存总量,也可以统计所有内存总量之和得到内存统计总量,实现了全面内存监控功能。当收到客户端打印内存统计信息时,调用打印接口按数据类型格式化输出对应的内存总量和内存统计总量。
[0045]
在一些实施例中,数据类型包括整数类型和/或浮点数类型和/或字符类型和/或布尔类型。本实施例中,整数类型分为字节型(byte)短整型(short)整型(int)和长整型(long),浮点数类型分为单精度浮点型(float)和双精度浮点型(double),字符类型为char,布尔类型为boolean(其值包括ture和/或false)。
[0046]
本发明实施例的第二个方面,还提供了一种内存分配监控系统。图2示出的是本发明提供的内存分配监控系统的实施例的示意图。如图2所示,根据本发明的内存分配监控系统包括:数据映射口建立模块10、第一内存量统计模块20、第二内存量统计模块30、第三内存量统计模块40和内存总量统计模块50;数据映射口建立模块10配置用于在内存分配接口中建立多个分别与不同的数据类型相对应的数据映射口;第一内存量统计模块20配置用于基于客户端程序的内存分配请求统计其各数据类型占用的第一内存量;第二内存量统计模块30配置用于基于所请求内存分配请求的结果将内存或错误信息返回到客户端程序,并基于第一内存量更新其各数据类型占用的第二内存量;第三内存量统计模块40配置用于基于客户端程序释放内存且基于第二内存量更新其各数据类型占用的第三内存量;内存总量统计模块50配置用于将各数据类型占用的第三内存量分别存入其对应的数据映射口,得到各数据映射口的数据类型所占用的内存总量。
[0047]
本实施例的内存分配监控系统,实现了按数据类型统计内存占用情况,且达到动态监控内存占用情况的效果,为程序优化和定位内存泄漏提供参考,提升了程序的稳定性和健壮性。
[0048]
本发明实施例的第三个方面,还提供了一种计算机可读存储介质,存储介质存储有计算机程序指令,该计算机程序指令被执行时实现上述任意一项实施例方法。
[0049]
应当理解,在相互不冲突的情况下,以上针对根据本发明的内存监控方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的内存监控系统和存储介质。也就是说,上面所述的应用于本发明的内存监控方法的所有实施例及其变化都可以直接移转应用于根据本发明的系统和存储介质,并直接结合于此。为了本公开的简洁起见,在此不再重复阐述。
[0050]
本发明实施例的第四个方面,还提供了一种计算机设备,包括存储器302和处理器301,该存储器中存储有计算机程序,该计算机程序被该处理器执行时实现上述任意一项实施例方法。
[0051]
如图3所示,为本发明提供的执行内存分配监控方法的计算机设备的一个实施例的硬件结构示意图。以如图3所示的计算机设备为例,在该计算机设备中包括一个处理器301以及一个存储器302,并还可以包括:输入装置303和输出装置304。处理器301、存储器302、输入装置303和输出装置304可以通过总线或者其他方式连接,图3中以通过总线连接
为例。输入装置303可接收输入的数字或字符信息,以及产生与内存分配监控系统的用户设置以及功能控制有关的键信号输入。输出装置304可包括显示屏等显示设备。处理器301通过运行存储在存储器302中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的内存分配监控方法。
[0052]
最后需要说明的是,本文的计算机可读存储介质可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦写可编程rom(eeprom)或快闪存储器。易失性存储器可以包括随机存取存储器(ram),该ram可以充当外部高速缓存存储器。作为例子而非限制性的,ram可以以多种形式获得,比如同步ram(dram)、动态ram(dram)、同步dram(sdram)、双数据速率sdram(ddr sdram)、增强sdram(esdram)、同步链路dram(sldram)、以及直接rambus ram(drram)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
[0053]
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
[0054]
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
[0055]
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
[0056]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0057]
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1