[发明专利]内存分析方法、装置及系统在审
申请号: | 202010222504.3 | 申请日: | 2020-03-26 |
公开(公告)号: | CN113297057A | 公开(公告)日: | 2021-08-24 |
发明(设计)人: | 王烨;周祥 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F16/22;G06F16/242;G06F16/11 |
代理公司: | 北京成创同维知识产权代理有限公司 11449 | 代理人: | 刘静 |
地址: | 英属开曼群岛大*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 分析 方法 装置 系统 | ||
本发明公开一种内存分析方法、装置及系统。该方法包括:获取系统运行时的内存快照文件,所述内存快照文件包括至少一种类型的内存对象,每种类型的内存对象包括按照预定的数据规格组织的属性信息;创建至少一个表结构,每个表结构和一种类型的内存对象对应;解析内存快照文件,并按照对应的数据规格将每个内存对象的属性信息解析到对应的表结构中;对至少一个表结构进行检索,以便于根据检索结果进行内存分析。该方法通过将内存快照文件中的内存对象的属性信息采集到多个表结构中,以便于通过检索表结构中的数据,分析并定位内存问题。
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种内存分析方法、装置及系统。
背景技术
面向对象语言是一种普遍适用的高级语言,并经常用于构建各种复杂的系统,比如大型的电子商务网站,这些系统往往需要实时处理成千上万甚至上亿用户的各种网络请求,为了能够处理这些网络请求,运行状态下的系统需要在维护大量的对象(Object)。在复杂系统中,系统经常会出现各种各样的问题,其中内存问题往往是普遍的。内存问题主要包括内存泄露和内存溢出。内存泄漏是由于代码的不合理组织,导致某些对象在内存中没有及时释放。内存溢出是由于瞬时访问流量过大等原因,导致系统的进程瞬间产生大量的对象以及需要申请大量的内存,此时内存瞬间被消耗完,从而导致服务器宕机等故障。如果出现内存问题,对系统将产生很大的影响,最终会影响到用户体验。
针对内存问题,市面上存在一些分析工具,最常用的比如jdk自带的jmap、jhat工具,jmap可以dump出内存快照文件,内存快照文件是系统运行时的某一时刻的内存状态记录,而jhat可以分析这些dump出来的内存快照文件。另外,像eclipse公司的MemoryAnalyze Tool(MAT)等,还有很多其他商业工具。这些工具给开发者带来很好的帮助。但是,这些工具大都存在一些不足之处,例如这些工具都只观察到系统运行时某个具体时间点的对象,无法分析出对象随着时间的变化情况。再例如,这些工具很难将多个对象做关联分析。
发明内容
有鉴于此,本发明的目的是一种内存分析方法及系统,以提供现有分析工具所不具有关联分析能力。
为了达到这个目的,根据本发明的第一方面,本发明实施例提供一种内存分析方法,包括:
获取系统运行时的内存快照文件,所述内存快照文件包括至少一种类型的内存对象,每种类型的内存对象包括按照预定的数据规格组织的属性信息;
创建至少一个表结构,每个表结构和一种类型的内存对象对应;
解析所述内存快照文件,并按照对应的数据规格将每个内存对象的属性信息解析到对应的表结构中;
对所述至少一个表结构进行检索,以便于根据检索结果进行内存分析。
可选地,所述至少一种类型包括类对象和实例对象,所述将每个内存对象的属性信息解析到对应的表结构中包括:
将所述内存快照文件中的类对象的属性信息解析到类表内;
将所述内存快照文件中的实例对象的属性信息解析到实例表内。
可选地,所述对所述至少一个表结构进行检索包括:从所述类表、所述实例表和其他数据结构中选出至少两项进行关联检索。
可选地,根据所述类表和所述实例表的关联检索得到以下用于内存分析的检索结果:
实例对象最多的若干个类对象的名称;
内存占用最多的若干个实例对象对应的类对象的名称;
实例对象的统计数据。
可选地,所述对所述至少一个表结构进行检索包括:
接收SQL语句,所述SQL语句用于从所述至少一个表结构检索数据;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010222504.3/2.html,转载请声明来源钻瓜专利网。