CN112463603A - 内存泄漏的检测方法、装置、终端及存储介质 - Google Patents

内存泄漏的检测方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN112463603A
CN112463603A CN202011340207.5A CN202011340207A CN112463603A CN 112463603 A CN112463603 A CN 112463603A CN 202011340207 A CN202011340207 A CN 202011340207A CN 112463603 A CN112463603 A CN 112463603A
Authority
CN
China
Prior art keywords
memory
model
detection model
training
terminal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011340207.5A
Other languages
English (en)
Inventor
樊素超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202011340207.5A priority Critical patent/CN112463603A/zh
Publication of CN112463603A publication Critical patent/CN112463603A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开关于一种内存泄漏的检测方法、装置、终端及存储介质,涉及计算机技术领域。方法包括:获取运行场景所产生的第一内存信息;基于所述第一内存信息和内存检测模型,确定所述内存检测模型的模型预测结果;基于所述模型预测结果,确定所述运行场景的检测结果;其中,所述内存检测模型基于模型数据集训练确定,所述模型数据集包括基于滑动窗口预处理的内存数据,由于内存检测模型在训练过程中学习了内存信息与内存泄漏的检测结果之间的关系,从而基于该模型预测结果就能够确定该运行场景的检测结果,不需要重复触发该运行场景来判定检测结果,缩短了确定内存泄漏的检测结果的时间,提高了内存泄漏的检测效率。

Description

内存泄漏的检测方法、装置、终端及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种内存泄漏的检测方法、装置、终端及存储介质。
背景技术
开发人员在开发应用程序后,需要先对应用程序进行性能测试,在性能测试通过后,才对应用程序进行上线。而内存泄漏检测是对应用程序进行性能测试的重要环节。其中,内存泄漏是指该应用程序在运行结束后,该应用程序运行时占用的内存由于某种原因未被释放,造成内存浪费的现象。
相关技术中,终端运行N(N为大于1的整数)次该应用程序的脚本文件,收集每次运行该脚本文件时,该应用程序的内存占用值;然后确定相邻两次内存占用值之间的差值,也即确定第N次和第N-1次内存占用值之间的差值,第N-2和第N-1次内存占用值之间的差值,……,第2次和第1次内存占用值之间的差值,得到N-1个内存占用值之间的差值。响应于N-1个内存占用值之间的差值中有预设比例的差值是正数,则确定该应用程序存在内存泄漏,反之,则确定该应用程序不存在内存泄漏。
上述方法中需要运行N次该应用程序的脚本文件,才能确定出该应用程序的内存泄漏的检测结果,而运行N次该应用程序的脚本文件耗时较多,从而导致内存泄漏检测的效率低。
发明内容
本公开提供一种内存泄漏的检测方法、装置、终端及存储介质,能够提高内存泄漏的检测效率。本公开的技术方案如下:
根据本公开实施例的一方面,提供一种内存泄漏的检测方法,包括:
获取运行场景所产生的第一内存信息;
基于所述第一内存信息和内存检测模型,确定所述内存检测模型的模型预测结果;
基于所述模型预测结果,确定所述运行场景的检测结果;
其中,所述内存检测模型基于模型数据集训练确定,所述模型数据集包括基于滑动窗口预处理的内存数据。
在一些实施例中,所述基于所述第一内存信息和内存检测模型,确定所述内存检测模型的模型预测结果包括:
基于所述第一内存信息和内存检测模型,获取所述运行场景的第一预测结果,其中所述第一预测结果包括所述运行场景存在内存泄漏或者所述运行场景不存在内存泄漏;
基于所述第一预测结果,确定所述模型预测结果。
在一些实施例中,所述基于所述第一预测结果,确定所述模型预测结果包括:
响应于所述第一预测结果为所述运行场景存在内存泄漏,确定所述运行场景的泄漏概率;
确定所述模型预测结果为所述运行场景存在泄漏和泄漏概率。
在一些实施例中,所述基于所述模型预测结果,确定所述运行场景的检测结果包括:
响应于所述泄漏概率大于概率阈值,确定所述检测结果为所述运行场景存在内存泄漏和泄漏概率;
响应于所述泄漏概率不大于所述概率阈值,触发所述运行场景重新运行,并更新所述第一内存信息。
在一些实施例中,所述基于所述模型预测结果,确定所述运行场景的检测结果包括:
响应于所述第一预测结果为所述运行场景不存在内存泄漏,确定所述模型预测结果为所述运行场景不存在泄漏;
确定所述检测结果为所述运行场景不存在内存泄漏。
根据本公开实施例的另一方面,提供一种内存检测模型的训练方法,包括:
自动触发测试场景循环运行;
获取所述测试场景多次运行中所产生的多个第二内存信息及所述测试场景的样本标记;
基于所述多个第二内存信息和所述样本标记,获取模型数据集;
基于所述模型数据集,训练确定内存检测模型。
在一些实施例中,所述基于所述多个第二内存信息和所述样本标记,获取模型数据集包括:
基于数据滑动窗口,确定所述多个第二内存信息中的内存数据;
串联所述内存数据,生成样本内存数据;
基于所述样本内存数据和所述样本标记,生成所述模型数据集。
在一些实施例中,所述基于所述模型数据集,训练确定内存检测模型包括:
基于所述模型数据集,生成训练集和测试集;
基于所述训练集训练初始内存检测模型;
基于所述测试集,测试训练后的初始内存检测模型;
基于测试后的初始内存检测模型,确定所述内存检测模型。
在一些实施例中,所述基于测试后的初始内存检测模型,确定所述内存检测模型包括:
响应于所述初始内存检测模型基于所述训练集和所述测试集多次训练和多次测试,更新所述初始内存检测模型的算法模型参数;
基于所述模型数据集,对更新参数后的初始内存检测模型进行训练,得到所述内存检测模型。
在一些实施例中,所述样本标记为所述测试场景的内存泄漏结果,其中所述内存泄漏结果包括所述测试场景存在内存泄漏或者所述测试场景不存在内存泄漏。
在一些实施例中,所述基于数据滑动窗口,确定所述多个第二内存信息中的内存数据包括:
对于每个第二内存信息,基于所述数据滑动窗口,对所述第二内存信息进行截取,得到内存数据,其中所述内存数据对应的采样时长等于所述数据滑动窗口的长度。
根据本公开实施例的另一方面,提供一种内存泄漏的检测装置,包括:
第一获取单元,被配置为执行获取运行场景所产生的第一内存信息;
第一确定单元,被配置为执行基于所述第一内存信息和内存检测模型,确定所述内存检测模型的模型预测结果;
第二确定单元,被配置为执行基于所述模型预测结果,确定所述运行场景的检测结果;其中,所述内存检测模型基于模型数据集训练确定,所述模型数据集包括基于滑动窗口预处理的内存数据。
在一些实施例中,所述第一确定单元,包括:
第一获取子单元,基于所述第一内存信息和内存检测模型,获取所述运行场景的第一预测结果,其中所述第一预测结果包括所述运行场景存在内存泄漏或者所述运行场景不存在内存泄漏;
第一确定子单元,基于所述第一预测结果,确定所述模型预测结果。
在一些实施例中,所述第一确定子单元,被配置为执行响应于所述第一预测结果为所述运行场景存在内存泄漏,确定所述运行场景的泄漏概率;确定所述模型预测结果为所述运行场景存在泄漏和泄漏概率。
在一些实施例中,所述第一确定子单元,被配置为执行响应于所述泄漏概率大于概率阈值,确定所述检测结果为所述运行场景存在内存泄漏和泄漏概率;响应于所述泄漏概率不大于所述概率阈值,触发所述运行场景重新运行,并更新所述第一内存信息。
在一些实施例中,所述第一确定子单元,被配置为执行响应于所述第一预测结果为所述运行场景不存在内存泄漏,确定所述模型预测结果为所述运行场景不存在泄漏;确定所述检测结果为所述运行场景不存在内存泄漏。
根据本公开实施例的另一方面,提供一种内存检测模型的训练装置,包括:
运行单元,被配置为执行自动触发测试场景循环运行;
第二获取单元,被配置为执行获取所述测试场景多次运行中所产生的多个第二内存信息及所述测试场景的样本标记;
第三获取单元,被配置为执行基于所述多个第二内存信息和所述样本标记,获取模型数据集;
第三确定单元,被配置为执行基于所述模型数据集,训练确定内存检测模型。
在一些实施例中,所述第三获取单元,包括:
第二确定子单元,被配置为执行基于数据滑动窗口,确定所述多个第二内存信息中的内存数据;
串联子单元,被配置为执行串联所述内存数据,生成样本内存数据;
第一生成子单元,被配置为执行基于所述样本内存数据和所述样本标记,生成所述模型数据集。
在一些实施例中,所述第三确定单元包括:
第二生成子单元,被配置为执行基于所述模型数据集,生成训练集和测试集;
训练子单元,被配置为执行基于所述训练集训练初始内存检测模型;
测试子单元,被配置为执行基于所述测试集,测试训练后的初始内存检测模型;
第三确定子单元,被配置为执行基于测试后的初始内存检测模型,确定所述内存检测模型。
在一些实施例中,所述第三确定子单元,被配置为执行响应于所述初始内存检测模型基于所述训练集和所述测试集多次训练和多次测试,更新所述初始内存检测模型的算法模型参数;基于所述模型数据集,对更新参数后的初始内存检测模型进行训练,得到所述内存检测模型。
在一些实施例中,所述样本标记为所述测试场景的内存泄漏结果,其中所述内存泄漏结果包括所述测试场景存在内存泄漏或者所述测试场景不存在内存泄漏。
在一些实施例中,所述第二确定子单元,被配置为执行对于每个第二内存信息,基于所述数据滑动窗口,对所述第二内存信息进行截取,得到内存数据,其中所述内存数据对应的采样时长等于所述数据滑动窗口的长度。
根据本公开实施例的另一方面,提供了一种终端,所述终端包括处理器和用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现执行上述实施例中内存泄漏的检测方法和内存检测模型的训练方法。
根据本公开实施例的另一方面,提供了一种计算机可读存储介质,所述存储介质中存储指令,当所述存储介质中的指令由终端的处理器执行时,使得所述终端能够执行上述实施例中内存泄漏的检测方法和内存检测模型的训练方法。
根据本公开实施例的另一方面,提供了一种计算机程序产品,当所述计算机程序产品中的指令由终端的处理器执行时,使得所述终端能够执行上述实施例中内存泄漏的检测方法和内存检测模型的训练方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
在本公开实施例中,通过获取运行场景产生的第一内存信息,借助于内存检测模型确定出模型检测结果,由于内存检测模型在训练过程中学习了内存信息与内存泄漏的检测结果之间的关系,从而基于该模型预测结果就能够确定该运行场景的检测结果,不需要重复触发该运行场景来判定检测结果,缩短了确定内存泄漏的检测结果的时间,提高了内存泄漏的检测效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种内存泄漏的检测方法的流程图。
图2是根据一示例性实施例示出的一种内存检测模型的训练方法的流程图。
图3是根据一示例性实施例示出的一种内存检测模型的训练方法的流程图。
图4是根据一示例性实施例示出的一种内存泄漏的检测方法的流程图。
图5是根据一示例性实施例示出的一种内存泄漏的检测装置的框图。
图6是根据一示例性实施例示出的一种内存检测模型的训练装置的框图。
图7是根据一示例性实施例示出的一种终端的结构框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开所涉及的用户信息可以为经用户授权或者经过各方充分授权的信息。
图1是根据一示例性实施例示出的一种内存泄漏的检测方法的流程图,如图1所示,该内存泄漏的检测方法用于终端中,包括以下步骤。
在步骤S11中,终端获取运行场景所产生的第一内存信息。
在步骤S12中,终端基于该第一内存信息和内存检测模型,确定该内存检测模型的模型预测结果。
在步骤S13中,终端基于该模型预测结果,确定该运行场景的检测结果。
其中,该内存检测模型基于模型数据集训练确定,该模型数据集包括基于滑动窗口预处理的内存数据。
在一些实施例中,该基于该第一内存信息和内存检测模型,确定该内存检测模型的模型预测结果包括:
基于该第一内存信息和内存检测模型,获取该运行场景的第一预测结果,其中该第一预测结果包括该运行场景存在内存泄漏或者该运行场景不存在内存泄漏;
基于该第一预测结果,确定该模型预测结果。
在一些实施例中,该基于该第一预测结果,确定该模型预测结果包括:
响应于该第一预测结果为该运行场景存在内存泄漏,确定该运行场景的泄漏概率;
确定该模型预测结果为该运行场景存在泄漏和泄漏概率。
在一些实施例中,该基于该模型预测结果,确定该运行场景的检测结果包括:
响应于该泄漏概率大于概率阈值,确定该检测结果为该运行场景存在内存泄漏和泄漏概率;
响应于该泄漏概率不大于该概率阈值,触发该运行场景重新运行,并更新该第一内存信息。
在一些实施例中,该基于该模型预测结果,确定该运行场景的检测结果包括:
响应于该第一预测结果为该运行场景不存在内存泄漏,确定该模型预测结果为该运行场景不存在泄漏;
确定该检测结果为该运行场景不存在内存泄漏。
在本公开实施例中,通过获取运行场景产生的第一内存信息,借助于内存检测模型确定出模型检测结果,由于内存检测模型在训练过程中学习了内存信息与内存泄漏的检测结果之间的关系,从而基于该模型预测结果就能够确定该运行场景的检测结果,不需要重复触发该运行场景来判定检测结果,缩短了确定内存泄漏的检测结果的时间,提高了内存泄漏的检测效率。
图2是根据一示例性实施例示出的一种内存检测模型的训练方法的流程图,如图2所示,该内存检测模型的训练方法用于终端中,包括以下步骤。
在步骤S21中,终端自动触发测试场景循环运行;
在步骤S22中,终端获取该测试场景多次运行中所产生的多个第二内存信息及该测试场景的样本标记;
在步骤S23中,终端基于该多个第二内存信息和该样本标记,获取模型数据集;
在步骤S24中,终端基于该模型数据集,训练确定内存检测模型。
在一些实施例中,该基于该多个第二内存信息和该样本标记,获取模型数据集包括:
基于数据滑动窗口,确定该多个第二内存信息中的内存数据;
串联该内存数据,生成样本内存数据;
基于该样本内存数据和该样本标记,生成该模型数据集。
在一些实施例中,该基于该模型数据集,训练确定内存检测模型包括:
基于该模型数据集,生成训练集和测试集;
基于该训练集训练初始内存检测模型;
基于该测试集,测试训练后的初始内存检测模型;
基于测试后的初始内存检测模型,确定该内存检测模型。
在一些实施例中,该基于测试后的初始内存检测模型,确定该内存检测模型包括:
响应于该初始内存检测模型基于该训练集和该测试集多次训练和多次测试,更新该初始内存检测模型的算法模型参数;
基于该模型数据集,对更新参数后的初始内存检测模型进行训练,得到该内存检测模型。
在一些实施例中,该样本标记为该测试场景的内存泄漏结果,其中该内存泄漏结果包括该测试场景存在内存泄漏或者该测试场景不存在内存泄漏。
在一些实施例中,该基于数据滑动窗口,确定该多个第二内存信息中的内存数据包括:
对于每个第二内存信息,基于该数据滑动窗口,对该第二内存信息进行截取,得到内存数据,其中该内存数据对应的采样时长等于该数据滑动窗口的长度。
在本公开实施例中,通过获取运行场景产生的第一内存信息,借助于内存检测模型确定出模型检测结果,由于内存检测模型在训练过程中学习了内存信息与内存泄漏的检测结果之间的关系,从而基于该模型预测结果就能够确定该运行场景的检测结果,不需要重复触发该运行场景来判定检测结果,缩短了确定内存泄漏的检测结果的时间,提高了内存泄漏的检测效率。
图3是根据一示例性实施例示出的一种内存检测模型的训练方法的流程图,如图3所示,在本公开实施例中,以训练内存检测模型为例进行说明,该内存检测模型的训练方法用于终端中,包括以下步骤:
在步骤301中,终端自动触发测试场景循环运行。
其中,该测试场景为待测试应用程序中的可测试功能对应的场景,该待测试应用程序安装于安卓(Android)系统中。由于在训练内存检测模型的过程中,需要触发测试场景的循环运行来构建模型数据集,因此,该测试场景的个数为多个。相应的,该多个测试场景为同一待测试应用程序中的场景,或者,该多个测试场景为不同的待测试应用程序中的场景。在本步骤中,终端循环运行该测试场景对应的脚本文件,触发该测试场景循环运行。
在本步骤中,终端根据预设的运行次数,自动触发该测试场景循环运行。在一些实施例中,终端预先设置该运行场景的运行次数,例如,运行次数为run_times,终端设置run_times=5,即该运行场景循环运行5次。
在步骤302中,终端获取该测试场景多次运行中所产生的多个第二内存信息及该测试场景的样本标记。
其中,该第二内存信息为该测试场景在运行过程中产生的内存占用信息。终端获取该多个第二内存信息的方式可根据用户需求选择,本公开实施例对此不做限定。在一些实施例中,终端根据安卓调试桥梁(Android Debug Bridge,ADB)命令,获取该测试场景多次运行中所产生的多个第二内存信息,该多个第二内存信息的个数等于运行次数。例如,终端设置运行该测试场景所产生的第二内存信息为X_A,响应于运行次数为5,终端获取的多个第二内存信息依次为x_a0、x_a1、x_a2、x_a3和x_a4。
其中,该测试场景的样本标记为该测试场景的内存泄漏结果。其中该内存泄漏结果包括该测试场景存在内存泄漏或者该测试场景不存在内存泄漏。终端获取该样本标记的方式为:终端通过内存检测工具,监测该测试场景在多次运行中所产生的第二内存信息的变化情况,根据该变化情况,确定该样本标记。
在本步骤中,终端根据该变化情况,确定该样本标记的实现方式为:响应于该第二内存信息随时间增加而变化,且第二内存信息包括的内存数据的长度达到第一阈值,终端确定该样本标记为:该测试场景存在内存泄漏;响应于该第二内存信息随时间增加而变化,且第二内存信息包括的内存数据的长度未达到第一阈值,终端确定该样本标记为:该测试场景不存在内存泄漏。
例如,内存检测工具可以为安卓监测器(Android Monitor),该样本标记为y_A,第一阈值为终端的最大的运行内存。其中,内存检测工具的类型可根据用户的需求设置,本公开实施例对此不做限定。第一阈值可根据用户的需求设置,本公开实施例对此不做限定。
在本步骤中,终端获取包括多种内存类型的第二内存信息,或者,根据目标内存类型,获取该目标内存类型对应的第二内存信息。
在一些实施例中,终端确定预设的多种内存类型。在每次运行该测试场景的过程中,基于该多种内存类型,获取每种内存类型的内存信息,将该每种内存类型的内存信息组成该第二内存信息。
例如,该预设的多种内存类型分别为Java(一种计算机编程语言)层内存、native(本地应用)层内存、显卡内存、总物理内存以及虚拟内存;则每种内存类型的内存信息分别为Java层内存信息、native层内存信息、显卡内存信息、总物理内存信息以及虚拟内存信息,终端将该每种内存类型的内存信息组成该第二内存信息。
在另一些实施例中,终端确定待测试的目标内存类型,基于该目标内存类型,获取该目标内存类型的内存信息,将该目标内存类型的内存信息作为该第二内存信息。
例如,目标内存类型为Java层内存,终端在每次运行该测试场景的过程中,基于该Java层内存,获取该Java层内存的内存信息,将该Java层内存的内存信息作为该第二内存信息,即该第二内存信息为第二Java层内存信息。
在本步骤中,终端根据该包含多种内存类型的内存信息的第二内存信息,分别获取该测试场景的样本标记。
在本公开实施例中,终端通过基于第二内存信息的不同类型,分别获取不同类型的内存信息,得到第二内存信息以及样本标记,进而将该第二内存信息以及样本标记作为模型输入,提高模型训练的准确性。
在步骤303中,终端基于该多个第二内存信息和该样本标记,获取模型数据集。
其中,步骤303由步骤3031-3033来实现:
在步骤3031中,终端基于数据滑动窗口,确定该多个第二内存信息中的内存数据。
在一些实施例中,终端在运行该测试场景的过程中,随时间增加,待测试应用程序的内存占用信息会有少许波动,则同一个测试场景对应的多个第二内存信息并不完全相同,并且多个第二内存信息存在噪声数据。在该测试场景运行结束时,随时间增加,待测试应用程序的内存占用信息会有下降趋势。因此,终端事先设置一个数据滑动窗口。
在本步骤中,终端对于每个第二内存信息,基于该数据滑动窗口,对该第二内存信息进行截取,得到内存数据,其中该内存数据对应的采样时长等于该数据滑动窗口的长度。该内存数据为该第二内存信息中相邻采样时刻的内存占用值之间的差值小于预设数值的内存信息。其中,数据滑动窗口的长度小于每个第二内存信息中的不同内存类型的内存信息的长度的最小值。其中,预设数值的大小可根据用户的需求设置,本公开实施例对此不做限定。
例如,数据滑动窗口为window,则采样时长len(window)为2s。终端截取到采样时长为2s的内存数据,得到的多个内存数据为x_a0’、x_a1’、x_a2’、x_a3’和x_a4’。
在步骤3032中,终端串联该内存数据,生成样本内存数据。
例如,终端得到的多个内存数据为x_a0’、x_a1’、x_a2’、x_a3’和x_a4’,则终端将同一测试场景产生的多个内存数据进行串联,得到同一测试场景对应的样本内存数据,为X_A’。
在本步骤中,终端将该多个内存数据进行串联的方式为:终端根据获取的多个内存数据的顺序,将该多个内存数据进行串联。例如,第一次运行测试场景后获取的第二内存信息为x_a0,第二次运行测试场景后获取的第二内存信息为x_a1,第三次运行测试场景后获取的第二内存信息为x_a2,截取得到的三个内存数据为x_a0’、x_a1’、x_a2’,则将该三个内存数据按照获取顺序进行串联,得到样本内存数据X_A’。
在步骤3033中,终端基于该样本内存数据和该样本标记,生成该模型数据集。
其中,终端将同一测试场景对应的样本内存数据与样本标记组成第一模型数据,响应于测试场景的个数为多个,终端确定多个第一模型数据,将该多个第一模型数据组成该模型数据集。
在本公开实施例中,终端通过将多个第二内存信息截取后得到的内存数据串联,使得同一测试场景对应的多组内存数据连接在一起,以及将该内存数据与测试场景的样本标记进行组合,得到多个模型数据集,进而提高模型数据集的稳定性。
在步骤304中,终端基于该模型数据集,生成训练集和测试集。
在一些实施例中,终端根据预设比例,将该模型数据集划分为训练集和测试集。其中,预设比例为训练集与测试集的样本个数之比。例如,预设比例为4:1,则80%的模型数据集作为训练集,30%的模型数据集作为测试集。其中,预设比例的大小可根据用户的需求设置,本公开实施例对此不做限定。
在一些实施例中,终端根据目标内存类型,分别划分不同目标内存类型的样本内存信息为训练数据和测试数据。例如,Java层内存训练数据,Java层内存测试数据,native层内存训练数据、native层内存测试数据。
在本公开实施例中,终端通过将多个模型数据集划分为训练集和测试集,使得初始内存检测模型基于训练集和测试集,获取多个样本信息的特征值,调整模型的参数,进而得到最优的模型参数,来提高初始内存检测模型的训练精度。
在步骤305中,终端基于该训练集训练初始内存检测模型。
终端将训练集输入该初始内存检测模型,对该初始内存检测模型进行训练,得到训练后的初始内存检测模型,从而对训练后的初始内存检测模型进行测试。在一些实施例中,该训练后的初始内存检测模型可以基于模型参数对提取到的特征进行计算,得到预测样本标记。
例如,该训练后的初始内存检测模型可以为神经网络,该训练后的初始内存检测模型可以提取训练集的特征和样本标记的特征,神经网络可以基于网络参数对二者的特征进行计算,得到该样本标记。其中,训练后的初始内存检测模型的类型可以根据用户需求设置,本公开实施例对此不做限定。
在一些实施例中,该初始内存检测模型可以存储于该终端中,在该终端需要进行模型训练时调用即可,该初始内存检测模型也可以存储于服务器中,终端可以从服务器处调用该初始内存检测模型。该初始内存检测模型中模型参数为初始值,该初始内存检测模型未经过第二内存信息训练,则通过该初始内存检测模型对第二内存信息进行内存泄漏的检测时得到的结果可能不准确,因而需要通过上述步骤302中获取到的第二内存信息对该初始内存检测模型进行训练。
在一些实施例中,终端基于目标内存类型,分别对该初始内存检测模型进行训练,能够训练得到每种目标内存类型对应的训练后的初始内存检测模型,例如,训练后的Java层初始内存检测模型,训练后的native层初始内存检测模型。
在步骤306中,终端基于该测试集,测试训练后的初始内存检测模型。
本步骤中,终端将测试集输入该训练后的初始内存检测模型,对该训练后的初始内存检测模型进行测试,得到测试后的初始内存检测模型。
在一些实施例中,终端基于目标内存类型,分别对该训练后的初始内存检测模型进行测试,得到每种目标内存类型对应的测试后的初始内存检测模型,例如,测试后的Java层初始内存检测模型,测试后的native层初始内存检测模型。
在步骤307中,终端基于测试后的初始内存检测模型,确定该内存检测模型。
在一些实施例中,终端响应于该初始内存检测模型基于该训练集和该测试集多次训练和多次测试,更新该初始内存检测模型的算法模型参数。其中,在步骤305的训练过程以及步骤306的测试过程中,该初始内存检测模型基于得到的预测样本标记与真实样本标记之间的误差,对算法模型参数进行更新,直到符合目标条件时,停止更新,得到更新参数后的初始内存检测模型,该真实样本标记为该训练集中的样本标记。
本步骤中,终端基于该模型数据集,对更新参数后的初始内存检测模型进行训练,得到该内存检测模型。
在一些实施例中,终端基于目标内存类型,分别对该测试后的初始内存检测模型更新算法模型参数,得到每种目标内存类型对应的更新参数后的初始内存检测模型,例如,更新参数后的Java层初始内存检测模型,更新参数后的native层初始内存检测模型。
在本公开实施例中,通过获取运行场景产生的第一内存信息,借助于内存检测模型确定出模型检测结果,由于内存检测模型在训练过程中学习了内存信息与内存泄漏的检测结果之间的关系,从而基于该模型预测结果就能够确定该运行场景的检测结果,不需要重复触发该运行场景来判定检测结果,缩短了确定内存泄漏的检测结果的时间,提高了内存泄漏的检测效率。
图4是根据一示例性实施例示出的一种内存泄漏的检测方法的流程图,如图3所示,在本公开实施例中,以基于内存检测模型,对第一内存信息检测为例进行说明,该内存泄漏的检测方法用于终端中,包括以下步骤:
在步骤401中,终端获取运行场景所产生的第一内存信息。
其中,该运行场景为待检测应用程序中的可测试功能对应的场景。该待检测应用程序安装于安卓系统中,且该待检测的应用程序与待测试应用程序的类型相同或者不同,本申请对此不做限定。该第一内存信息为该运行场景在运行过程中产生的内存占用信息。
在本步骤中,终端获取包括多种内存类型的第一内存信息,或者,根据目标内存类型,获取该目标内存类型对应的第一内存信息。
在一些实施例中,终端确定预设的多种内存类型,在运行该运行场景的过程中,基于该多种内存类型,获取每种内存类型的内存信息,将该每种内存类型的内存信息组成该第一内存信息。
在另一些实施例中,终端确定待检测的目标内存类型,基于该目标内存类型,获取该目标内存类型的内存信息,将该目标内存类型的内存信息作为该第一内存信息。
例如,终端确定目标内存类型为native层内存,获取该native层内存的内存信息,将该native层内存信息作为该第一内存信息。
在一些实施例中,终端根据ADB命令,获取该运行场景所产生的第一内存信息。
在步骤402中,终端基于该第一内存信息和内存检测模型,获取该运行场景的第一预测结果,其中该第一预测结果包括该运行场景存在内存泄漏或者该运行场景不存在内存泄漏。
在本步骤中,终端将该第一内存信息输入该内存检测模型,由该内存检测模型对该第一内存信息进行特征提取,基于提取到的该第一内存信息的特征,确定该运行场景对应的第一预测结果。
终端需要先确定该内存检测模型,该内存检测模型可以为上述步骤301-307训练得到;并且由以上步骤301-307可知,终端可以通过两种第二内存信息训练得到内存检测模型,也即该内存检测模型为基于目标内存类型对应的第二内存信息训练得到,或者为基于多种内存类型对应的第二内存信息训练得到。在一些实施例中,终端确定该内存检测模型的步骤包括:
响应于该第一内存信息包括多种内存类型的内存信息,终端确定该内存检测模型为由包括多种内存类型的第二内存信息训练得到的内存检测模型;响应于该第一内存信息包括目标内存类型的内存信息,终端基于该目标内存类型,确定与该目标内存类型对应的内存检测模型。例如,该目标内存类型为native层内存,则终端确定native层内存检测模型。
在步骤403中,终端基于该第一预测结果,确定该模型预测结果。
在一些实施例中,终端响应于该第一预测结果为该运行场景存在内存泄漏,确定该运行场景的泄漏概率。终端确定该模型预测结果为该运行场景存在泄漏和泄漏概率。
其中,该内存检测模型基于提取到的该第一内存信息的特征,确定模型输出的概率,终端将该模型输出的概率作为该泄漏概率。
在另一些实施例中,终端响应于该第一预测结果为该运行场景不存在内存泄漏,确定该模型预测结果为该运行场景不存在泄漏。
在一些实施例中,终端基于目标内存类型与该第一预测结果,确定该模型预测结果。例如,该目标内存类型为native层内存,该第一预测结果为该运行场景不存在内存泄漏,则终端确定该模型预测结果为该运行场景中的native层内存不存在内存泄漏。
在步骤404中,终端基于该模型预测结果,确定该运行场景的检测结果。
在一些实施例中,终端响应于该泄漏概率大于概率阈值,确定该检测结果为该运行场景存在内存泄漏和泄漏概率。例如,该概率阈值为60%,泄漏概率为P,P为70%,则70%>60%,终端确定该检测结果为该运行场景存在泄漏和70%。其中,概率的类型可以根据用户需求设置,例如,百分数、分数、小数等,且概率阈值的数值可根据用户需求设置,本申请对此不做限定。
在另一些实施例中,终端响应于该泄漏概率不大于该概率阈值,触发该运行场景重新运行,并更新该第一内存信息。
其中,终端根据预设的更新次数,触发该运行场景重新运行,并更新该第一内存信息。该更新次数可根据用户需求设置,例如,该更新次数为5,本申请对此不做具体限定。终端根据更新后的第一内存信息和内存检测模型,重新执行步骤402-404的操作。
在另一些实施例中,终端根据响应于该模型预测结果为该运行场景不存在泄漏,确定该检测结果为该运行场景不存在内存泄漏。
其中,当模型预测结果为该运行场景不存在泄漏时,终端确定该检测结果为该运行场景不存在内存泄漏。
在一些实施例中,终端基于目标内存类型与该模型预测结果,确定该运行场景的检测结果。
在本公开实施例中,终端通过将第一内存信息输入内存检测模型,得到该运行场景的内存泄漏的检测结果,如不存在内存泄漏,或者,存在内存泄漏以及泄漏概率为P,使得终端无需再次触发该运行场景,根据该泄漏概率即可得知该待检测的应用程序的内存泄漏的情况,节省了终端的运行时间。以及终端通过根据不同的内存类型,获取目标内存类型的内存信息,得到第一内存信息,以及将该第一内存信息输入对应的内存检测模型,得到该检测结果,使得终端输出不同内存类型的内存信息对应的检测结果,细化了内存泄漏检测的类型,提高了内存泄漏检测的精度。
图5是根据一示例性实施例示出的一种内存泄漏的检测装置框图。参照图5,该装置500包括第一获取单元501,第一确定单元502和第二确定单元503。
第一获取单元501,被配置为执行获取运行场景所产生的第一内存信息;
第一确定单元502,被配置为执行基于该第一内存信息和内存检测模型,确定该内存检测模型的模型预测结果;
第二确定单元503,被配置为执行基于该模型预测结果,确定该运行场景的检测结果;其中,该内存检测模型基于模型数据集训练确定,该模型数据集包括基于滑动窗口预处理的内存数据。
在一些实施例中,该第一确定单元502,包括:
第一获取子单元,基于该第一内存信息和内存检测模型,获取该运行场景的第一预测结果,其中该第一预测结果包括该运行场景存在内存泄漏或者该运行场景不存在内存泄漏;
第一确定子单元,基于该第一预测结果,确定该模型预测结果。
在一些实施例中,该第一确定子单元,被配置为执行响应于该第一预测结果为该运行场景存在内存泄漏,确定该运行场景的泄漏概率;确定该模型预测结果为该运行场景存在泄漏和泄漏概率。
在一些实施例中,该第一确定子单元,被配置为执行响应于该泄漏概率大于概率阈值,确定该检测结果为该运行场景存在内存泄漏和泄漏概率;响应于该泄漏概率不大于该概率阈值,触发该运行场景重新运行,并更新该第一内存信息。
在一些实施例中,该第一确定子单元,被配置为执行响应于该第一预测结果为该运行场景不存在内存泄漏,确定该模型预测结果为该运行场景不存在泄漏;确定该检测结果为该运行场景不存在内存泄漏。
在本公开实施例中,通过获取运行场景产生的第一内存信息,借助于内存检测模型确定出模型检测结果,由于内存检测模型在训练过程中学习了内存信息与内存泄漏的检测结果之间的关系,从而基于该模型预测结果就能够确定该运行场景的检测结果,不需要重复触发该运行场景来判定检测结果,缩短了确定内存泄漏的检测结果的时间,提高了内存泄漏的检测效率。
图6是根据一示例性实施例示出的一种内存检测模型的训练装置框图。参照图6,该装置600包括运行单元601,第二获取单元602,第三获取单元603和第三确定单元604。
运行单元601,被配置为执行自动触发测试场景循环运行;
第二获取单元602,被配置为执行获取该测试场景多次运行中所产生的多个第二内存信息及该测试场景的样本标记;
第三获取单元603,被配置为执行基于该多个第二内存信息和该样本标记,获取模型数据集;
第三确定单元604,被配置为执行基于该模型数据集,训练确定内存检测模型。
在一些实施例中,该第三获取单元603,包括:
第二确定子单元,被配置为执行基于数据滑动窗口,确定该多个第二内存信息中的内存数据;
串联子单元,被配置为执行串联该内存数据,生成样本内存数据;
第一生成子单元,被配置为执行基于该样本内存数据和该样本标记,生成该模型数据集。
在一些实施例中,该第三确定单元604包括:
第二生成子单元,被配置为执行基于该模型数据集,生成训练集和测试集;
训练子单元,被配置为执行基于该训练集训练初始内存检测模型;
测试子单元,被配置为执行基于该测试集,测试训练后的初始内存检测模型;
第三确定子单元,被配置为执行基于测试后的初始内存检测模型,确定该内存检测模型。
在一些实施例中,该第三确定子单元,被配置为执行响应于该初始内存检测模型基于该训练集和该测试集多次训练和多次测试,更新该初始内存检测模型的算法模型参数;基于该模型数据集,对更新参数后的初始内存检测模型进行训练,得到该内存检测模型。
在一些实施例中,该样本标记为该测试场景的内存泄漏结果,其中该内存泄漏结果包括该测试场景存在内存泄漏或者该测试场景不存在内存泄漏。
在一些实施例中,该第二确定子单元,被配置为执行对于每个第二内存信息,基于该数据滑动窗口,对该第二内存信息进行截取,得到内存数据,其中该内存数据对应的采样时长等于该数据滑动窗口的长度。
在本公开实施例中,通过获取运行场景产生的第一内存信息,借助于内存检测模型确定出模型检测结果,由于内存检测模型在训练过程中学习了内存信息与内存泄漏的检测结果之间的关系,从而基于该模型预测结果就能够确定该运行场景的检测结果,不需要重复触发该运行场景来判定检测结果,缩短了确定内存泄漏的检测结果的时间,提高了内存泄漏的检测效率。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7示出了本公开一个示例性实施例提供的终端700的结构框图。在一些实施例中,该终端700可以为:智能手机、平板电脑、笔记本电脑或台式电脑等。终端700还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端700包括有:处理器701和存储器702。
在一些实施例中,处理器701包括一个或多个处理核心,比如4核心处理器、8核心处理器等。在一些实施例中,处理器701采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(ProgrammableLogic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。在一些实施例中,处理器701也包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器701集成有GPU(GraphicsProcessing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器701还包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
在一些实施例中,存储器702包括一个或多个计算机可读存储介质,该计算机可读存储介质是非暂态的。在一些实施例中,存储器702还包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器702中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器701所执行以实现本公开中方法实施例提供的内存泄漏的检测方法。
在一些实施例中,终端700还可选包括有:外围设备接口703和至少一个外围设备。在一些实施例中,处理器701、存储器702和外围设备接口703之间通过总线或信号线相连。在一些实施例中,各个外围设备通过总线、信号线或电路板与外围设备接口703相连。具体地,外围设备包括:射频电路704、显示屏705、摄像头组件706、音频电路707、定位组件708和电源709中的至少一种。
外围设备接口703可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器701和存储器702。在一些实施例中,处理器701、存储器702和外围设备接口703被集成在同一芯片或电路板上;在一些其他实施例中,处理器701、存储器702和外围设备接口703中的任意一个或两个在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路704用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路704通过电磁信号与通信网络以及其他通信设备进行通信。射频电路704将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。在一些实施例中,射频电路704包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。在一些实施例中,射频电路704通过至少一种无线通信协议来与其他终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路704还包括NFC(Near Field Communication,近距离无线通信)有关的电路,本公开对此不加以限定。
显示屏705用于显示UI(User Interface,用户界面)。在一些实施例中,该UI包括图形、文本、图标、视频及其他们的任意组合。当显示屏705是触摸显示屏时,显示屏705还具有采集在显示屏705的表面或表面上方的触摸信号的能力。在一些实施例中,该触摸信号作为控制信号输入至处理器701进行处理。此时,显示屏705还用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏705为一个,设置在终端700的前面板;在另一些实施例中,显示屏705为至少两个,分别设置在终端700的不同表面或呈折叠设计;在另一些实施例中,显示屏705是柔性显示屏,设置在终端700的弯曲表面上或折叠面上。甚至,显示屏705还设置成非矩形的不规则图形,也即异形屏。在一些实施例中,显示屏705采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件706用于采集图像或视频。在一些实施例中,摄像头组件706包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其他融合拍摄功能。在一些实施例中,摄像头组件706还包括闪光灯。在一些实施例中,闪光灯是单色温闪光灯,在一些实施例中,闪光灯是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,用于不同色温下的光线补偿。
在一些实施例中,音频电路707包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器701进行处理,或者输入至射频电路704以实现语音通信。出于立体声采集或降噪的目的,在一些实施例中,麦克风为多个,分别设置在终端700的不同部位。在一些实施例中,麦克风是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器701或射频电路704的电信号转换为声波。在一些实施例中,扬声器是传统的薄膜扬声器,在一些实施例中,扬声器以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅能够将电信号转换为人类可听见的声波,也能够将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路707还包括耳机插孔。
定位组件708用于定位终端700的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。在一些实施例中,定位组件707是基于美国的GPS(Global Positioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源709用于为终端700中的各个组件进行供电。在一些实施例中,电源709是交流电、直流电、一次性电池或可充电电池。当电源709包括可充电电池时,该可充电电池是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还用于支持快充技术。
在一些实施例中,终端700还包括有一个或多个传感器710。该一个或多个传感器710包括但不限于:加速度传感器711、陀螺仪传感器77、压力传感器713、指纹传感器714、光学传感器715以及接近传感器716。
在一些实施例中,加速度传感器711检测以终端700建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器711用于检测重力加速度在三个坐标轴上的分量。在一些实施例中,处理器701根据加速度传感器711采集的重力加速度信号,控制显示屏705以横向视图或纵向视图进行用户界面的显示。在一些实施例中,加速度传感器711还用于游戏或者用户的运动数据的采集。
在一些实施例中,陀螺仪传感器712检测终端700的机体方向及转动角度,陀螺仪传感器712与加速度传感器711协同采集用户对终端700的3D动作。处理器701根据陀螺仪传感器712采集的数据,能够实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
在一些实施例中,压力传感器713设置在终端700的侧边框和/或显示屏705的下层。当压力传感器713设置在终端700的侧边框时,能够检测用户对终端700的握持信号,由处理器701根据压力传感器713采集的握持信号进行左右手识别或快捷操作。当压力传感器713设置在显示屏705的下层时,由处理器701根据用户对显示屏705的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器714用于采集用户的指纹,由处理器701根据指纹传感器714采集到的指纹识别用户的身份,或者,由指纹传感器714根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器701授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。在一些实施例中,指纹传感器714被设置在终端700的正面、背面或侧面。当终端700上设置有物理按键或厂商Logo时,指纹传感器714与物理按键或厂商Logo集成在一起。
光学传感器715用于采集环境光强度。在一个实施例中,处理器701根据光学传感器715采集的环境光强度,控制显示屏705的显示亮度。具体地,当环境光强度较高时,调高显示屏705的显示亮度;当环境光强度较低时,调低显示屏705的显示亮度。在另一个实施例中,处理器701还根据光学传感器715采集的环境光强度,动态调整摄像头组件706的拍摄参数。
接近传感器716,也称距离传感器,通常设置在终端700的前面板。接近传感器716用于采集用户与终端700的正面之间的距离。在一个实施例中,当接近传感器716检测到用户与终端700的正面之间的距离逐渐变小时,由处理器701控制显示屏705从亮屏状态切换为息屏状态;当接近传感器716检测到用户与终端700的正面之间的距离逐渐变大时,由处理器701控制显示屏705从息屏状态切换为亮屏状态。
本领域技术人员能够理解,图7中示出的结构并不构成对终端700的限定,能够包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种计算机可读存储介质,该存储介质中存储指令,当该存储介质中的指令由终端的处理器执行时,使得该终端能够执行上述实施例中内存泄漏的检测方法和内存检测模型的训练方法。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品中的指令由终端的处理器执行时,使得该终端能够执行上述实施例中内存泄漏的检测方法和内存检测模型的训练方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种内存泄漏的检测方法,其特征在于,包括:
获取运行场景所产生的第一内存信息;
基于所述第一内存信息和内存检测模型,确定所述内存检测模型的模型预测结果;
基于所述模型预测结果,确定所述运行场景的检测结果;
其中,所述内存检测模型基于模型数据集训练确定,所述模型数据集包括基于滑动窗口预处理的内存数据。
2.根据权利要求1所述的检测方法,其特征在于,所述基于所述第一内存信息和内存检测模型,确定所述内存检测模型的模型预测结果包括:
基于所述第一内存信息和内存检测模型,获取所述运行场景的第一预测结果,其中所述第一预测结果包括所述运行场景存在内存泄漏或者所述运行场景不存在内存泄漏;
基于所述第一预测结果,确定所述模型预测结果。
3.根据权利要求2所述的检测方法,其特征在于,所述基于所述第一预测结果,确定所述模型预测结果包括:
响应于所述第一预测结果为所述运行场景存在内存泄漏,确定所述运行场景的泄漏概率;
确定所述模型预测结果为所述运行场景存在泄漏和泄漏概率。
4.一种内存检测模型的训练方法,其特征在于,包括:
自动触发测试场景循环运行;
获取所述测试场景多次运行中所产生的多个第二内存信息及所述测试场景的样本标记;
基于所述多个第二内存信息和所述样本标记,获取模型数据集;
基于所述模型数据集,训练确定内存检测模型。
5.根据权利要求4所述的方法,其特征在于,所述基于所述多个第二内存信息和所述样本标记,获取模型数据集包括:
基于数据滑动窗口,确定所述多个第二内存信息中的内存数据;
串联所述内存数据,生成样本内存数据;
基于所述样本内存数据和所述样本标记,生成所述模型数据集。
6.根据权利要求4所述的训练方法,其特征在于,所述基于所述模型数据集,训练确定内存检测模型包括:
基于所述模型数据集,生成训练集和测试集;
基于所述训练集训练初始内存检测模型;
基于所述测试集,测试训练后的初始内存检测模型;
基于测试后的初始内存检测模型,确定所述内存检测模型。
7.一种内存泄漏的检测装置,其特征在于,包括:
第一获取单元,被配置为执行获取运行场景所产生的第一内存信息;
第一确定单元,被配置为执行基于所述第一内存信息和内存检测模型,确定所述内存检测模型的模型预测结果;
第二确定单元,被配置为执行基于所述模型预测结果,确定所述运行场景的检测结果;其中,所述内存检测模型基于模型数据集训练确定,所述模型数据集包括基于滑动窗口预处理的内存数据。
8.一种内存检测模型的训练装置,其特征在于,包括:
运行单元,被配置为执行自动触发测试场景循环运行;
第二获取单元,被配置为执行获取所述测试场景多次运行中所产生的多个第二内存信息及所述测试场景的样本标记;
第三获取单元,被配置为执行基于所述多个第二内存信息和所述样本标记,获取模型数据集;
第三确定单元,被配置为执行基于所述模型数据集,训练确定内存检测模型。
9.一种终端,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至3中任一项所述的内存泄漏的检测方法或者权利要求4至6中任一项所述的内存检测模型的训练方法。
10.一种存储介质,其特征在于,当所述存储介质中的指令由所述终端的处理器执行时,使得所述终端能够执行如权利要求1至3中任一项所述的内存泄漏的检测方法或者权利要求4至6中任一项所述的内存检测模型的训练方法。
CN202011340207.5A 2020-11-25 2020-11-25 内存泄漏的检测方法、装置、终端及存储介质 Pending CN112463603A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011340207.5A CN112463603A (zh) 2020-11-25 2020-11-25 内存泄漏的检测方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011340207.5A CN112463603A (zh) 2020-11-25 2020-11-25 内存泄漏的检测方法、装置、终端及存储介质

Publications (1)

Publication Number Publication Date
CN112463603A true CN112463603A (zh) 2021-03-09

Family

ID=74808138

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011340207.5A Pending CN112463603A (zh) 2020-11-25 2020-11-25 内存泄漏的检测方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN112463603A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991961B1 (en) * 2007-10-15 2011-08-02 Oracle America, Inc. Low-overhead run-time memory leak detection and recovery
CN108804332A (zh) * 2018-06-14 2018-11-13 南京大学 一种基于机器学习的c程序内存泄漏智能化检测方法
CN110717189A (zh) * 2019-09-29 2020-01-21 支付宝(杭州)信息技术有限公司 数据泄露识别方法、装置及设备
CN111679926A (zh) * 2020-05-25 2020-09-18 中国工商银行股份有限公司 内存溢出检测方法及系统
CN111949528A (zh) * 2020-08-05 2020-11-17 北京字节跳动网络技术有限公司 内存泄漏的检测方法、装置、电子设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991961B1 (en) * 2007-10-15 2011-08-02 Oracle America, Inc. Low-overhead run-time memory leak detection and recovery
CN108804332A (zh) * 2018-06-14 2018-11-13 南京大学 一种基于机器学习的c程序内存泄漏智能化检测方法
CN110717189A (zh) * 2019-09-29 2020-01-21 支付宝(杭州)信息技术有限公司 数据泄露识别方法、装置及设备
CN111679926A (zh) * 2020-05-25 2020-09-18 中国工商银行股份有限公司 内存溢出检测方法及系统
CN111949528A (zh) * 2020-08-05 2020-11-17 北京字节跳动网络技术有限公司 内存泄漏的检测方法、装置、电子设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李吟;李必信;: "基于脚本预测和重组的内存泄漏测试加速技术", 计算机科学, no. 09, 15 September 2020 (2020-09-15) *

Similar Documents

Publication Publication Date Title
CN108897659B (zh) 修改日志级别的方法、装置及存储介质
CN110659542B (zh) 监控方法及装置
CN110163296B (zh) 图像识别的方法、装置、设备及存储介质
CN111858382A (zh) 应用程序测试方法、装置、服务器、系统及存储介质
CN114064450A (zh) 应用程序测试方法、装置、电子设备及存储介质
CN109189290B (zh) 点击区域识别方法、装置和计算机可读存储介质
CN111753606A (zh) 一种智能模型的升级方法及装置
CN107943484B (zh) 执行业务功能的方法和装置
CN111354378B (zh) 语音端点检测方法、装置、设备及计算机存储介质
CN109634872B (zh) 应用测试方法、装置、终端及存储介质
CN112052167A (zh) 生成测试脚本代码的方法和装置
CN111261174B (zh) 音频的分类方法、装置、终端及计算机可读存储介质
CN111797017A (zh) 存储日志的方法、装置、测试设备及存储介质
CN112001442A (zh) 特征检测方法、装置、计算机设备及存储介质
CN109107163B (zh) 模拟按键检测方法、装置、计算机设备及存储介质
CN113032560B (zh) 语句分类模型训练方法、语句处理方法及设备
CN112882094B (zh) 初至波的获取方法、装置、计算机设备及存储介质
CN110263695B (zh) 人脸部位的位置获取方法、装置、电子设备及存储介质
CN111063372B (zh) 确定音高特征的方法、装置、设备及存储介质
CN114360494A (zh) 韵律标注方法、装置、计算机设备及存储介质
CN112015612B (zh) 一种获取卡顿信息的方法及装置
CN113051485A (zh) 群组搜索方法、装置、终端及存储介质
CN112000576A (zh) 代码数据的检测方法、装置、设备及存储介质
CN112463603A (zh) 内存泄漏的检测方法、装置、终端及存储介质
CN112132472A (zh) 资源管理方法、装置、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination