异常检测方法、装置、电子设备和可读介质与流程

摘要: 本技术涉及计算机,尤其涉及一种异常检测方法、装置、电子设备和可读介质。背景技术:1、随着前端单页面应用承载的业务越来越多,页面结构也变得越来越复杂,当发生页面内...
异常检测方法、装置、电子设备和可读介质与流程

本技术涉及计算机,尤其涉及一种异常检测方法、装置、电子设备和可读介质。

背景技术:

1、随着前端单页面应用承载的业务越来越多,页面结构也变得越来越复杂,当发生页面内存泄露之后,泄露的对象非常庞大,长久使用页面之后会造成页面卡顿或崩溃,影响到业务使用。

2、在相关技术中,对页面内存泄漏的情况进行异常检查一般基于浏览器内核的内存结构来进行网页结构中的节点分析,通过检查页面上的节点与内存中节点来寻找泄露节点,从而定位内存泄漏位置。

3、然而,在上述的方案中,由于内存中通常会保存大量节点缓存以及非泄露节点和框架依赖节点,定位泄露节点的过程中在于的干扰节点数量远大于引起泄露的节点,提高了定位泄露节点的难度且降低异常检测的执行效率。

技术实现思路

1、本技术提供一种异常检测方法、装置、电子设备和可读介质,以减少干扰节点的数量、降低定位泄露节点的难度且提高异常检测的执行效率。

2、本技术的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本技术的实践而习得。

3、根据本技术实施例的一个方面,提供一种异常检测方法,包括:

4、获取待检测页面的虚拟文档结构树,所述虚拟文档结构树中包含虚拟结构节点,所述虚拟结构节点之间存在结构依赖关系和业务依赖关系中的至少一种;

5、针对所述待检测页面中被卸载的组件,解除所述虚拟文档结构树中与所述组件相关联的虚拟结构节点的结构依赖关系,得到业务依赖关系;

6、根据所述业务依赖关系,从解除所述结构依赖关系的虚拟结构节点中选择待检测节点并构建拓扑,得到待检测节点拓扑,所述待检测节点拓扑中包含孤立节点、循环节点、最远回收节点和最近回收节点中的一个或多个;

7、根据所述待检测节点拓扑,对所述待检测页面中对应的虚拟结构节点进行内存泄漏分析,得到所述待检测页面的异常检测结果。

8、根据本技术实施例的一个方面,提供一种异常检测装置,包括:

9、结构树获取模块,配置成获取待检测页面的虚拟文档结构树,所述虚拟文档结构树中包含虚拟结构节点,所述虚拟结构节点之间存在结构依赖关系和业务依赖关系中的至少一种;

10、关系解除模块,配置成针对所述待检测页面中被卸载的组件,解除所述虚拟文档结构树中与所述组件相关联的虚拟结构节点的结构依赖关系,得到业务依赖关系;

11、拓扑构建模块,配置成根据所述业务依赖关系,从解除所述结构依赖关系的虚拟结构节点中选择待检测节点并构建拓扑,得到待检测节点拓扑,所述待检测节点拓扑中包含孤立节点、循环节点、最远回收节点和最近回收节点中的一个或多个;

12、泄露分析模块,配置成根据所述待检测节点拓扑,对所述待检测页面中对应的虚拟结构节点进行内存泄漏分析,得到所述待检测页面的异常检测结果。

13、在本技术的一些实施例中,基于以上技术方案,关系解除模块具体配置成:根据针对所述待检测页面中页面组件的状态更新,从所述待检测页面的页面数据中卸载所述页面组件对应的虚拟结构节点;响应于所述虚拟结构节点的卸载操作,通过第一工具从所述待检测页面的虚拟文档结构树中删除与所述虚拟结构节点相关联的结构依赖关系。

14、在本技术的一些实施例中,基于以上技术方案,关系解除模块还配置成:在所述待检测页面的页面环境中添加所述第一工具;修改所述页面环境中的环境变量,以在所述待检测页面中的页面组件被卸载时,触发所述第一工具解除与虚拟结构节点相关联的结构依赖关系。

15、在本技术的一些实施例中,基于以上技术方案,拓扑构建模块具体配置成:获取所述待检测页面的堆快照数据,所述堆快照数据中包含解除所述结构依赖关系的虚拟文档结构树;从所述堆快照数据中的虚拟文档结构树,通过第二工具获取包含删除标记的所述虚拟结构节点,作为待检测节点,其中,所述虚拟结构节点的删除标记是解除所述结构依赖关系时添加标记的;通过所述第二工具根据所述堆快照数据中与所述待检测节点相关联的业务依赖关系,构建待检测节点拓扑。

16、在本技术的一些实施例中,基于以上技术方案,拓扑构建模块具体配置成:根据针对所述待检测页面的浏览器的堆快照获取指令,从所述浏览器中获取所述待检测页面的堆内存数据;在所述浏览器收集堆内存数据完成后,通过所述浏览器获取包含堆内存数据的堆快照文件。

17、在本技术的一些实施例中,基于以上技术方案,关系解除模块还配置成:针对所述虚拟文档结构树中的每个虚拟结构节点,在所述待检测页面中的页面组件被卸载时为所述虚拟结构节点添加删除标记;根据所述虚拟文档结构树中的业务依赖关系,解除全局节点与所述虚拟文档结构树中包含删除标记的虚拟结构节点之间的依赖关系。

18、在本技术的一些实施例中,基于以上技术方案,拓扑构建模块具体配置成:对于每个待检测节点,通过所述第二工具获取与所述待检测节点相关联的业务依赖关系;根据所获取的业务依赖关系进行循环依赖检测,得到存在循环依赖的待检测节点,作为环节点;根据每个待检测节点与根节点之间的距离,获取距离根节点最远的待检测节点,作为最远节点;获取与其他节点之间不存在业务依赖关系的待检测节点,作为孤立节点;根据所述孤立节点、所述最远节点和所述环节点,生成待检测节点拓扑。

19、在本技术的一些实施例中,基于以上技术方案,泄露分析模块具体配置成:根据所述待检测节点拓扑,在所述待检测页面的浏览器中查看所述待检测节点拓扑中各个节点的节点元数据;根据每个节点的保留路径和引用关系进行保留路径解析和闭包检测,得到存在内存泄漏的异常节点。

20、在本技术的一些实施例中,基于以上技术方案,泄露分析模块具体配置成:根据所述待检测节点拓扑中虚拟结构节点的节点元数据,获取所述待检测页面中对应页面组件的代码调用信息,所述节点元数据中包含对应页面组件的调用信息;根据源映射信息,将所述调用位置信息映射到源代码文件,得到异常代码,作为所述待检测页面的异常检测结果。

21、在本技术的一些实施例中,基于以上技术方案,泄露分析模块具体配置成:将所述异常代码与异常代码库中异常记录进行特征匹配,所述异常记录中包含异常类型的特征以及对应的异常修复信息;若存在于所述异常代码匹配的异常记录,则根据所述异常记录中的异常修复信息和所述异常代码,则生成针对于所述异常代码的异常修复提示信息。

22、根据本技术实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,该处理器配置为经由执行可执行指令来执行如以上技术方案中的异常检测方法。

23、根据本技术实施例的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,当该计算机程序被处理器执行时实现如以上技术方案中的异常检测方法。

24、根据本技术实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的异常检测方法。

25、在本技术的实施例中,异常检测装置获取待检测页面的虚拟文档结构树,所述虚拟文档结构树中包含虚拟结构节点,所述虚拟结构节点之间存在结构依赖关系和业务依赖关系中的至少一种,针对所述待检测页面中被卸载的组件,解除所述虚拟文档结构树中与所述组件相关联的虚拟结构节点的结构依赖关系,得到业务依赖关系,再根据所述业务依赖关系,从解除所述结构依赖关系的虚拟结构节点中选择待检测节点并构建拓扑,得到待检测节点拓扑,所述待检测节点拓扑中包含孤立节点、循环节点、最远回收节点和最近回收节点中的一个或多个,最后根据所述待检测节点拓扑,对所述待检测页面中对应的虚拟结构节点进行内存泄漏分析,得到所述待检测页面的异常检测结果。通过上述的方式,对于虚拟文档结构树,方案先通过解除结构依赖关系来过滤掉被卸载的节点,再根据业务依赖关系来选择出需要检测的节点,最后在针对所选择出的节点进行内存泄漏分析,从而在进行泄露分析之前对要分析的节点进行过滤,减少干扰节点的数量、降低定位泄露节点的难度且提高异常检测的执行效率。

26、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。