[发明专利]内存检测方法、装置、计算机可读存储介质及计算机在审
申请号: | 201711436089.6 | 申请日: | 2017-12-26 |
公开(公告)号: | CN108132863A | 公开(公告)日: | 2018-06-08 |
发明(设计)人: | 孙木鑫;石子凡;许力 | 申请(专利权)人: | 东软集团股份有限公司 |
主分类号: | G06F11/22 | 分类号: | G06F11/22 |
代理公司: | 北京英创嘉友知识产权代理事务所(普通合伙) 11447 | 代理人: | 魏嘉熹;南毅宁 |
地址: | 110179 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实例对象 引用关系 计算机可读存储介质 内存检测 有向图 内存分析 唯一路径 根节点 树遍历 树算法 子节点 计算机 内存 | ||
本公开涉及一种内存检测方法、装置、计算机可读存储介质及计算机,用以解决现有技术中由于实例对象之间错综的引用关系而导致内存分析效率低的技术问题。该方法包括:建立实例对象的引用关系有向图;根据引用关系有向图利用支配树算法计算得到支配树,其中,在支配树中,根节点到每一子节点之间有唯一路径;根据支配树遍历每一实例对象的内存大小。
技术领域
本公开涉及应用监控领域,具体地,涉及一种内存检测方法、装置、计算机可读存储介质及计算机。
背景技术
随着计算机网络技术的高速发展,人们对计算机内存性能的要求越来越高,由于计算机中所有程序的运行都在内存中进行,因此内存性能对计算机是否能够稳定运行有着至关重要的影响。为了保证计算机应用程序的稳定运行,常常需要进行应用程序性能分析,其中内存分析技术是计算机应用程序性能分析的主要技术。然而在现有技术中,面对日益繁复的计算机应用程序,内存的使用和回收趋于复杂多样化,实例对象之间错综的引用关系导致内存分析效率低,难以满足实际分析需求。
发明内容
本公开的目的是提供一种内存检测方法、装置、计算机可读存储介质及计算机,用以解决现有技术中由于实例对象之间错综的引用关系而导致内存分析效率低的技术问题。
为了实现上述目的,本公开第一方面提供一种内存检测方法,包括:
建立实例对象的引用关系有向图;
根据所述引用关系有向图利用支配树算法计算得到支配树,其中,在所述支配树中,根节点到每一子节点之间有唯一路径;
根据所述支配树遍历每一所述实例对象的内存大小。
可选地,所述方法包括:
在发生预设触发事件时,在线检测每一实例对象的内存大小,所述预设触发事件包括实例对象之间的引用关系发生变化,和/或,预设定时器超时。
可选地,所述方法应用于计算机运行的JAVA虚拟机,所述实例对象为JAVA实例,所述建立实例对象的引用关系有向图,包括:
根据JAVA反射机制建立所述JAVA虚拟机上每一JAVA实例之间的引用关系有向图。
可选地,所述根据所述支配树遍历每一所述实例对象的内存大小,包括:
从对象头、实例数据和对齐填充区域统计每一所述实例对象的内存大小。
可选地,所述方法还包括:
确定每一所述实例对象的内存大小为在所述支配树上该实例对象所支配的所有实例对象的内存大小之和。
本公开第二方面提供一种内存检测装置,包括:
有向图建立模块,用于建立实例对象的引用关系有向图;
支配树计算模块,用于根据所述引用关系有向图利用支配树算法计算得到支配树,其中,在所述支配树中,根节点到每一子节点之间有唯一路径;
遍历模块,用于根据所述支配树遍历每一所述实例对象的内存大小。
可选地,所述装置包括:
检测模块,用于在发生预设触发事件时,在线检测每一实例对象的内存大小,所述预设触发事件包括实例对象之间的引用关系发生变化,和/或,预设定时器超时。
可选地,所述装置应用于计算机运行的JAVA虚拟机,所述实例对象为JAVA实例,所述有向图建立模块用于:
根据JAVA反射机制建立所述JAVA虚拟机上每一JAVA实例之间的引用关系有向图。
可选地,所述遍历模块用于从对象头、实例数据和对齐填充区域统计每一所述实例对象的内存大小。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东软集团股份有限公司,未经东软集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711436089.6/2.html,转载请声明来源钻瓜专利网。