CN113342604A - 内存使用率的检测方法、装置、终端及存储介质 - Google Patents
内存使用率的检测方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN113342604A CN113342604A CN202110632467.8A CN202110632467A CN113342604A CN 113342604 A CN113342604 A CN 113342604A CN 202110632467 A CN202110632467 A CN 202110632467A CN 113342604 A CN113342604 A CN 113342604A
- Authority
- CN
- China
- Prior art keywords
- memory
- monitoring
- application
- value
- subset
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3058—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及内存检测技术领域,提供一种内存使用率的检测方法及相关设备,其方法包括:获取应用在运行时间段内堆内存使用率的监测值集合,运行时间段包括多个垃圾回收期间,监测值集合包括每次垃圾回收之前的第一监测子集以及每次垃圾回收之后的第二监测子集;判断第一监测值子集中的第一监测值是否大于第一内存阈值;若是,按时间顺序排列第二监测值子集包含的预设数量的第二监测值;判断预设数量的第二监测值是否为持续增长且预设数量的第二监测值是否大于第二内存阈值;若是,确定应用的内存使用率为高使用率。此外,本发明还涉及区块链技术,所述内存检测过程中产生的数据可存储于区块链中。本发明能够提高检测内存使用率的准确率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种内存使用率的检测方法、装置、终端及计算机可读存储介质。
背景技术
信息系统的内存使用情况监控是信息系统的运行过程中重要环节。目前通用的监控方式是一般通过工具记录应用系统java进程heapmem的使用率和使用量来达到监控的目的,在使用这种监控方式时,仅依据JVM使用率高低不能全面反映内存使用的情况。因此,亟需一种准确检测内存使用率的方法。
发明内容
鉴于以上内容,有必要提供一种内存使用率的检测方法、装置、终端及计算机可读存储介质,可提高检测内存使用率的准确率。
本发明提供一种内存使用率的检测方法,所述方法包括:
获取应用在运行时间段内堆内存使用率的监测值集合,所述运行时间段包括多个垃圾回收期间,所述监测值集合包括每次垃圾回收之前的第一监测子集以及每次垃圾回收之后的第二监测子集;
判断所述第一监测值子集中的第一监测值是否大于第一内存阈值;
若所述第一监测值子集中的第一监测值大于第一内存阈值,按时间顺序排列所述第二监测值子集包含的预设数量的第二监测值;
判断所述预设数量的第二监测值是否为持续增长且所述预设数量的第二监测值是否大于第二内存阈值,其中,所述第二内存阈值大于所述第一内存阈值;
若所述预设数量的第二监测值为持续增长且所述预设数量的第二监测值大于第二内存阈值,确定所述应用的内存使用率为高使用率。
在本发明可选实施例中,所述判断所述第一监测值子集中的第一监测值是否大于第一内存阈值之后,所述方法还包括:
若所述第一监测值子集中的第一监测值不大于第一内存阈值,确定所述应用的内存使用率为低使用率;
减少所述应用的配置内存。
在本发明可选实施例中,所述方法还包括:
获取所述应用的信息以及所述应用的运行环境变量;
通过基于特定的数据预测模型对所述应用的信息、所述应用的运行环境变量进行数据拟合得到所述第二内存阈值,其中,所述数据预测模型包括至少一个拟合所述应用的信息、所述应用的运行环境变量以及所述第二内存阈值之间数据关系的核函数。
在本发明可选实施例中,所述方法还包括:
获取所述应用的历史运行信息,所述历史运行信息包含所述应用从运行至退出的第一时间;
根据所述第一时间确定所述预设数量。
在本发明可选实施例中,所述确定所述应用的内存使用率为高使用率之后,所述方法还包括:
发送内存预警消息或者增加所述应用配置的内存。
在本发明可选实施例中,所述增加所述应用配置的内存,包括:
通过内存池分配增量内存块;
将所述增量内存块添加至所述应用的已分配内存。
在本发明可选实施例中,所述特定的数据预测模型为高斯过程回归模型。
本发明还提供一种内存使用率的检测装置,所述装置包括:
获取模块,用于获取应用在运行时间段内堆内存使用率的监测值集合,所述运行时间段包括多个垃圾回收期间,所述监测值集合包括每次垃圾回收之前的第一监测子集以及每次垃圾回收之后的第二监测子集;
第一判断模块,用于判断所述第一监测值子集中的第一监测值是否大于第一内存阈值;
排序模块,用于若所述第一监测值子集中的第一监测值大于第一内存阈值,按时间顺序排列所述第二监测值子集包含的预设数量的第二监测值;
第二判断模块,用于判断所述预设数量的第二监测值是否为持续增长且所述预设数量的第二监测值是否大于第二内存阈值,其中,所述第二内存阈值大于所述第一内存阈值;
确定模块,用于若所述预设数量的第二监测值为持续增长且所述预设数量的第二监测值大于第二内存阈值,确定所述应用的内存使用率为高使用率。
本发明还提供一种终端,所述终端包括存储器及处理器,所述存储器用于存储至少一个计算机可读指令,所述处理器用于执行所述至少一个计算机可读指令以实现任意实施例中所述的内存使用率的检测方法。
本发明还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有至少一个计算机可读指令,所述至少一个计算机可读指令被处理器执行时实现任意实施例中所述的内存使用率的检测方法。
由以上技术方案看出,本发明提供一种内存使用率的检测方法、装置、终端及计算机可读存储介质,获取应用在运行时间段内堆内存使用率的监测值集合,所述运行时间段包括多个垃圾回收期间,所述监测值集合包括每次垃圾回收之前的第一监测子集以及每次垃圾回收之后的第二监测子集;判断所述第一监测值子集中的第一监测值是否大于第一内存阈值;若所述第一监测值子集中的第一监测值大于第一内存阈值,按时间顺序排列所述第二监测值子集包含的预设数量的第二监测值;判断所述预设数量的第二监测值是否为持续增长且所述预设数量的第二监测值是否大于第二内存阈值,其中,所述第二内存阈值大于所述第一内存阈值;若所述预设数量的第二监测值为持续增长且所述预设数量的第二监测值大于第二内存阈值,确定所述应用的内存使用率为高使用率。通过应用运行时垃圾回收期间的多个堆内存使用率的变化情况从而能够准确检测内存使用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明实施例提供的内存使用率的检测方法的流程图;
图2是本发明实施例中采集到的应用运行时的堆内存使用率的示意图;
图3是本发明实施例提供的内存使用率的检测装置的功能模块图;
图4是本发明实现内存使用率的检测方法的较佳实施例的终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,图1为本发明实施例提供的一种内存使用率的检测方法的流程图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。
S11,获取应用在运行时间段内堆内存使用率的监测值集合,所述运行时间段包括多个垃圾回收期间,所述监测值集合包括每次垃圾回收之前的第一监测子集以及每次垃圾回收之后的第二监测子集。
本实施例中,所述应用可以为java应用。例如,当java应用运行时,该java应用对应的进程同步启动,此时可以获取该进程的堆内存使用率。
本实施例中,所述运行时间段可以为应用运行的任意时间段。
如图2如所示,图2为采集到的应用运行时的堆内存使用率的示意图,其中,横坐标表示采样周期,纵坐标表示堆内存使用率。
在图2中A表示垃圾回收之前的堆内存使用率,即A为第一监测值子集中的值,B表示垃圾回收之后的堆内存使用率,即B为第二监测值子集中的值,同样的,C表示的也是垃圾回收之后的堆内存使用率,即C也为第二监测值子集中的值。
S12,判断所述第一监测值子集中的第一监测值是否大于第一内存阈值。
在本实施例中,判断第一监测值子集中的第一监测值是否大于第一内存阈值包括:判断第一监测子集中的每个第一监测值是否都大于第一内存阈值,若是,则确定第一监测值子集中的第一监测值大于第一内存阈值,若否,则确定所述第一监测值子集中的第一监测值不大于第一内存阈值。
或者,判断第一监测值子集中的第一监测值是否大于第一内存阈值包括:判断第一监测子集中是否存在若干大于第一内存阈值的第一检测值,若是,则确定第一监测值子集中的第一监测值大于第一内存阈值,若否,则确定所述第一监测值子集中的第一监测值不大于第一内存阈值。
或者,判断第一监测值子集中的第一监测值是否大于第一内存阈值包括:判断第一监测子集中是否存在若干连续大于第一内存阈值的第一检测值,若是,则确定第一监测值子集中的第一监测值大于第一内存阈值,若否,则确定所述第一监测值子集中的第一监测值不大于第一内存阈值。
本实施例中,所述第一内存阈值可以为预设的,例如,所述第一内存阈值为30%。
进一步的,在本发明另一实施例中,可以通过以下步骤确定第一内存阈值。
所述方法还包括:
获取所述应用的应用类型;
获取所述应用类型的平均堆内存使用率和所述应用的历史堆内存使用率;
根据所述平均堆内存使用率和所述应用的历史堆内存使用率确定所述第一内存阈值。
在本实施例中,所述应用的类型可以为办公类型或者为游戏类型,不同应用类型运行时堆内存使用率有不同的区间。
本实施例中,根据应用所属类型的平均堆内存使用率以及应用的历史堆内存使用率来确定第一内存阈值,可以使得第一内存阈值更加准确,有利于提升优化内存配置的效果。
进一步的,在本发明一可选实施例中,所述根据所述平均堆内存使用率和所述应用的历史堆内存使用率确定所述第一内存阈值包括:
判断所述平均堆内存使用率是否大于所述历史堆内存使用率;
若所述平均堆内存使用率大于所述历史堆内存使用率,确定所述历史堆内存使用率为所述第一内存阈值;
若所述平均堆内存使用率小于所述历史堆内存使用率,确定所述平均堆内存使用率为所述第一内存阈值。
在本实施例中,通过识别平均堆内存使用率与应用的历史堆内存使用率两者之中的较小值,确定较小的值为第一内存阈值,使得在后续步骤中更能准确确定在当第一监测子集中的第一监测值小于两者之中的较小值时,应用的内存使用率为低使用率。
或者,所述根据所述平均堆内存使用率和所述应用的历史堆内存使用率确定所述第一内存阈值包括:
根据所述平均堆内存使用率、所述历史堆内存使用率与线性函数确定第一内存阈值。
例如,第一内存阈值z=ax+by,其中,a和b为系数,a为平均堆内存使用率,y为历史堆内存使用率。
进一步的,在本发明一可选实施例中,若所述第一监测值子集中的第一监测值不大于第一内存阈值,确定所述应用的内存使用率为低使用率;
减少所述应用的配置内存。
本实施例中,应用的配置内存是指为应用运行配置的内存或分配的内存。
在本实施例中,当第一监测值子集中的第一监测值不大于第一内存阈值时,说明应用内存浪费较多,此时,减少应用的配置内存,可以提高系统的优化资源空间。
S13,若所述第一监测值子集中的第一监测值大于第一内存阈值,按时间顺序排列所述第二监测值子集包含的预设数量的第二监测值。
优选的,所述预设数量的第二监测值为多个连续的第二监测值,即获取连续的垃圾回收之后的堆内存使用率的值。
可选的,本发明一实施例中,预设数量可以为预先设定的,例如,预设数量为100。
进一步的,在本发明一可选实施例中,所述方法还包括:确定所述预设数量。具体的,所述确定所述预设数量包括:
获取所述应用的历史运行信息,所述历史运行信息包含所述应用从运行至退出的第一时间;
根据所述第一时间确定所述预设数量。
一种可选实施例中,应用从运行至退出的第一时间可以是:应用从开始运行至正常退出的平均时间,即该平均时间为第一时间。
例如,第一时间为T,每个第二监测值获取的时间间隔为t1,则预设数量为(T/t1)*1/m,其中m为预设值,例如,m为二分之一或者三分之二。
或者,应用从运行至退出的第一时间可以是:应用从开始运行至报错退出的最短时间,即该最短时间为第一时间。例如,第一时间为T,每个第二监测值获取的时间间隔为t1,则预设数量为T/t1。
在本实施例中,通过确定合理的预设数量的值,避免了预设数量设置过大或预设数量设置过小带来的评估不准确的问题。
S14,判断所述预设数量的第二监测值是否为持续增长且所述预设数量的第二监测值是否大于第二内存阈值,其中,所述第二内存阈值大于所述第一内存阈值。
本发明一实施例中,第二内存阈值可以为预先设定的。例如,第二内存阈值为70%。
进一步的,在本发明一可选实施例中,所述方法还包括:确定所述第二内存阈值。具体的,所述确定所述第二内存阈值包括:
获取所述应用的信息以及所述应用的运行环境变量;
通过基于特定的数据预测模型对所述应用的信息、所述应用的运行环境变量进行数据拟合得到所述第二内存阈值,其中,所述数据预测模型包括至少一个拟合所述应用的信息、所述应用的运行环境变量以及所述第二内存阈值之间数据关系的核函数。
在本实施例中,所述特定的数据预测模型是根据训练得到的机器学习模型。
具体的,核函数可以为高斯核函数、径向基核函数,也可以为多种核函数的组合。
例如,核函数kernal=20.0**2*RBF+5.4**2.6*RBF*ExpSineSquared;
其中,RBF是径向基核函数,ExpSineSquared是正弦平方核函数。
在本实施例中,核函数用于拟合应用的信息、应用的运行环境变量与第二内存阈值的数据关系,具体的,包括拟合应用的信息、应用的运行环境变量与第二内存阈值的数据趋势。
优选的,所述基于特定的数据预测模型为高斯过程回归模型。
所述高斯过程回归模型是使用高斯过程先验对数据进行回归分析,通过高斯过程回归模型能够预测数据的概率分布,有利于提高获取到的第二内存阈值的可靠性。
本发明实施例中,在训练该模型时,训练样本包括输入集和输出集,输入集为应用的信息,应用的运行化境变量,输出集为应用运行存在运行障碍(如内存不足,闪退、运行缓慢等状况)时的第二内存阈值。
训练时通过核函数拟合应用的信息、应用的运行环境变量与第二内存阈值的数据趋势,调整数据预测模型的参数,得到训练的数据预测模型。
例如,第二内存阈值为y,y=f(X)+Σ,且f(X)~GP[0,k(X,X’)],P(Σ)~N(Σ|0,σn2),k(X,X’)为核函数。f(X)~GP[0,k(X,X’)]表示不同训练样本之间满足一个联合高斯分布。
由于P(Σ)~N(Σ|0,σn 2),因此得到y的分布为:
y~N(0,K+σn 2),其中,K为核函数矩阵;在得到y的分布之后,可以通过训练样本中的数据拟合上述模型,进而通过最大似然估计的方法求解分布中的超参数(如核函数中的参数和方差),得到对第二内存阈值进行预测的数据预测模型。
S15,若所述预设数量的第二监测值为持续增长且所述预设数量的第二监测值大于第二内存阈值,确定所述应用的内存使用率为高使用率。
在本实施例中,当确定应用的内存使用率为高使用率时,确定该应用内存不足的风险,如确定该应用运行时内存不足。
进一步的,在本发明一可选实施例中,所述确定所述应用的内存使用率为高使用率之后,所述方法还包括:
发送内存预警消息或者增加所述应用配置的内存。
当应用的内存使用率为高使用率时,表明继续运行内存可能存在性能可能会导致应用闪退、崩溃等状况,此时,向运维人员发送内存预警消息,可以有利于运维人员及时处理。
在本实施例中,当应用的内存使用率为高使用率时,说明应用内存可能存在不足,此时,增加应用配置的内存,可以提高应用运行的稳定性。
优选的,所述增加所述应用配置的内存,包括:
通过内存池分配增量内存块;
将所述增量内存块添加至所述应用的已分配内存。
本发明实施例中,所述内存池是预先申请并分配的若干内存块,通过内存池进行内存的分配可以避免频繁进行内存分配产生的内存碎片,提升内存分配效率。
需要说明的是,为保证上述在内存检测过程中获取及/产生的数据及结果的私密性和安全性,比如获取到的监测值集合、应用信息、应用的允许环境变量、拟合得到的内存阈值等,上述数据和结果还可以存储于一区块链的节点中。
本实施例所提供的内存使用率的检测方法,获取应用在运行时间段内堆内存使用率的监测值集合,所述运行时间段包括多个垃圾回收期间,所述监测值集合包括每次垃圾回收之前的第一监测子集以及每次垃圾回收之后的第二监测子集;判断所述第一监测值子集中的第一监测值是否大于第一内存阈值;若所述第一监测值子集中的第一监测值大于第一内存阈值,按时间顺序排列所述第二监测值子集包含的预设数量的第二监测值;判断所述预设数量的第二监测值是否为持续增长且所述预设数量的第二监测值是否大于第二内存阈值,其中,所述第二内存阈值大于所述第一内存阈值;若所述预设数量的第二监测值为持续增长且所述预设数量的第二监测值大于第二内存阈值,确定所述应用的内存使用率为高使用率。通过应用运行时垃圾回收期间的多个堆内存使用率的变化情况从而能够准确检测内存使用率。
如图3所示,图3为本发明实施例提供一种内存使用率的检测装置的功能模块图。内存使用率的检测装置20包括获取模块210、第一判断模块220、排序模块230、第二判断模块240和确定模块250。本发明所称的模块是指一种能够被终端的处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在终端的存储器中,所述终端可以是电脑、服务器、手机等电子设备。在本实施例中,关于各模块的功能将在后续的实施例中详述。
获取模块210,用于获取应用在运行时间段内堆内存使用率的监测值集合,所述运行时间段包括多个垃圾回收期间,所述监测值集合包括每次垃圾回收之前的第一监测子集以及每次垃圾回收之后的第二监测子集。
本实施例中,所述应用可以为java应用。例如,当java应用运行时,该java应用对应的进程同步启动,此时可以获取该进程的堆内存使用率。
本实施例中,所述运行时间段可以为应用运行的任意时间段。
如图2如所示,图2为采集到的应用运行时的堆内存使用率的示意图,其中,横坐标表示采样周期,纵坐标表示堆内存使用率。
在图2中A表示垃圾回收之前的堆内存使用率,即A为第一监测值子集中的值,B表示垃圾回收之后的堆内存使用率,即B为第二监测值子集中的值,同样的,C表示的也是垃圾回收之后的堆内存使用率,即C也为第二监测值子集中的值。第一判断模块220,用于判断所述第一监测值子集中的第一监测值是否大于第一内存阈值。
在本实施例中,判断第一监测值子集中的第一监测值是否大于第一内存阈值包括:判断第一监测子集中的每个第一监测值是否都大于第一内存阈值,若是,则确定第一监测值子集中的第一监测值大于第一内存阈值,若否,则确定所述第一监测值子集中的第一监测值不大于第一内存阈值。
或者,判断第一监测值子集中的第一监测值是否大于第一内存阈值包括:判断第一监测子集中是否存在若干大于第一内存阈值的第一检测值,若是,则确定第一监测值子集中的第一监测值大于第一内存阈值,若否,则确定所述第一监测值子集中的第一监测值不大于第一内存阈值。
或者,判断第一监测值子集中的第一监测值是否大于第一内存阈值包括:判断第一监测子集中是否存在若干连续大于第一内存阈值的第一检测值,若是,则确定第一监测值子集中的第一监测值大于第一内存阈值,若否,则确定所述第一监测值子集中的第一监测值不大于第一内存阈值。
本实施例中,所述第一内存阈值可以为预设的,例如,所述第一内存阈值为30%。
进一步的,在本发明另一实施例中,可以通过内存使用率的检测装置包含的内存阈值确定模块确定第一内存阈值。
所述内存阈值确定模块用于:
获取所述应用的应用类型;
获取所述应用类型的平均堆内存使用率和所述应用的历史堆内存使用率;
根据所述平均堆内存使用率和所述应用的历史堆内存使用率确定所述第一内存阈值。
在本实施例中,所述应用的类型可以为办公类型或者为游戏类型,不同应用类型运行时堆内存使用率有不同的区间。
本实施例中,根据应用所属类型的平均堆内存使用率以及应用的历史堆内存使用率来确定第一内存阈值,可以使得第一内存阈值更加准确,有利于提升优化内存配置的效果。
进一步的,在本发明一可选实施例中,所述根据所述平均堆内存使用率和所述应用的历史堆内存使用率确定所述第一内存阈值包括:
判断所述平均堆内存使用率是否大于所述历史堆内存使用率;
若所述平均堆内存使用率大于所述历史堆内存使用率,确定所述历史堆内存使用率为所述第一内存阈值;
若所述平均堆内存使用率小于所述历史堆内存使用率,确定所述平均堆内存使用率为所述第一内存阈值。
在本实施例中,通过识别平均堆内存使用率与应用的历史堆内存使用率两者之中的较小值,确定较小的值为第一内存阈值,使得在后续步骤中更能准确确定在当第一监测子集中的第一监测值小于两者之中的较小值时,应用的内存使用率为低使用率。
或者,所述根据所述平均堆内存使用率和所述应用的历史堆内存使用率确定所述第一内存阈值包括:
根据所述平均堆内存使用率、所述历史堆内存使用率与线性函数确定第一内存阈值。
例如,第一内存阈值z=ax+by,其中,a和b为系数,a为平均堆内存使用率,y为历史堆内存使用率。
进一步的,在本发明一可选实施例中,所述装置还包括内存配置调整模块,所述内存配置调整模块用于:
判断所述第一监测值子集中的第一监测值是否大于第一内存阈值之后,若所述第一监测值子集中的第一监测值不大于第一内存阈值,确定所述应用的内存使用率为低使用率;
减少所述应用的配置内存。
本实施例中,应用的配置内存是指为应用运行配置的内存或分配的内存。
在本实施例中,当第一监测值子集中的第一监测值不大于第一内存阈值时,说明应用内存浪费较多,此时,减少应用的配置内存,可以提高系统的优化资源空间。
排序模块230,用于若所述第一监测值子集中的第一监测值大于第一内存阈值,按时间顺序排列所述第二监测值子集包含的预设数量的第二监测值。
优选的,所述预设数量的第二监测值为多个连续的第二监测值,即获取连续的垃圾回收之后的堆内存使用率的值。
可选的,本发明一实施例中,预设数量可以为预先设定的,例如,预设数量为100。
进一步的,在本发明一可选实施例中,所述装置还包括预设数量确定模块,用于确定所述预设数量。具体的,所述预设数量确定模块具体用于:
获取所述应用的历史运行信息,所述历史运行信息包含所述应用从运行至退出的第一时间;
根据所述第一时间确定所述预设数量。
一种可选实施例中,应用从运行至退出的第一时间可以是:应用从开始运行至正常退出的平均时间,即该平均时间为第一时间。
例如,第一时间为T,每个第二监测值获取的时间间隔为t1,则预设数量为(T/t1)*1/m,其中m为预设值,例如,m为二分之一或者三分之二。
或者,应用从运行至退出的第一时间可以是:应用从开始运行至报错退出的最短时间,即该最短时间为第一时间。例如,第一时间为T,每个第二监测值获取的时间间隔为t1,则预设数量为T/t1。
在本实施例中,通过确定合理的预设数量的值,避免了预设数量设置过大或预设数量设置过小带来的评估不准确的问题。
第二判断模块240,用于判断所述预设数量的第二监测值是否为持续增长且所述预设数量的第二监测值是否大于第二内存阈值,其中,所述第二内存阈值大于所述第一内存阈值。
本发明一实施例中,第二内存阈值可以为预先设定的。例如,第二内存阈值为70%。
进一步的,在本发明一可选实施例中,所述装置包含的内存阈值确定模块还用于:确定所述第二内存阈值。具体的,所述内存阈值确定模块具体用于:
获取所述应用的信息以及所述应用的运行环境变量;
通过基于特定的数据预测模型对所述应用的信息、所述应用的运行环境变量进行数据拟合得到所述第二内存阈值,其中,所述数据预测模型包括至少一个拟合所述应用的信息、所述应用的运行环境变量以及所述第二内存阈值之间数据关系的核函数。
在本实施例中,所述特定的数据预测模型是根据训练得到的机器学习模型。
具体的,核函数可以为高斯核函数、径向基核函数,也可以为多种核函数的组合。
例如,核函数kernal=20.0**2*RBF+5.4**2.6*RBF*ExpSineSquared;
其中,RBF是径向基核函数,ExpSineSquared是正弦平方核函数。
在本实施例中,核函数用于拟合应用的信息、应用的运行环境变量与第二内存阈值的数据关系,具体的,包括拟合应用的信息、应用的运行环境变量与第二内存阈值的数据趋势。
优选的,所述基于特定的数据预测模型为高斯过程回归模型。
所述高斯过程回归模型是使用高斯过程先验对数据进行回归分析,通过高斯过程回归模型能够预测数据的概率分布,有利于提高获取到的第二内存阈值的可靠性。
本发明实施例中,在训练该模型时,训练样本包括输入集和输出集,输入集为应用的信息,应用的运行化境变量,输出集为应用运行存在运行障碍(如内存不足,闪退、运行缓慢等状况)时的第二内存阈值。
训练时通过核函数拟合应用的信息、应用的运行环境变量与第二内存阈值的数据趋势,调整数据预测模型的参数,得到训练的数据预测模型。
例如,第二内存阈值为y,y=f(X)+Σ,且f(X)~GP[0,k(X,X’)],P(Σ)~N(Σ|0,σn2),k(X,X’)为核函数。f(X)~GP[0,k(X,X’)]表示不同训练样本之间满足一个联合高斯分布。
由于P(Σ)~N(Σ|0,σn 2),因此得到y的分布为:
y~N(0,K+σn 2),其中,K为核函数矩阵;在得到y的分布之后,可以通过训练样本中的数据拟合上述模型,进而通过最大似然估计的方法求解分布中的超参数(如核函数中的参数和方差),得到对第二内存阈值进行预测的数据预测模型。
确定模块250,用于若所述预设数量的第二监测值为持续增长且所述预设数量的第二监测值大于第二内存阈值,确定所述应用的内存使用率为高使用率。
在本实施例中,当确定应用的内存使用率为高使用率时,确定该应用内存不足的风险,如确定该应用运行时内存不足。
进一步的,在本发明一可选实施例中,所述装置还包括预警模块,所述预警模块用于:
确定所述应用的内存使用率为高使用率之后,发送内存预警消息或者增加所述应用配置的内存。
优选的,所述预警模块包括预警单元和内存增加单元;
所述预警单元用于:确定所述应用的内存使用率为高使用率之后,发送内存预警消息;
所述内存增加单元用于:确定所述应用的内存使用率为高使用率之后,增加所述应用配置的内存。
所述内存增加单元具体用于:通过内存池分配增量内存块;将所述增量内存块添加至所述应用的已分配内存。
本发明实施例中,所述内存池是预先申请并分配的若干内存块,通过内存池进行内存的分配可以避免频繁进行内存分配产生的内存碎片,提升内存分配效率。
当应用的内存使用率为高使用率时,表明继续运行内存可能存在性能可能会导致应用闪退、崩溃等状况,此时,向运维人员发送内存预警消息,可以有利于运维人员及时处理。
在本实施例中,当应用的内存使用率为高使用率时,说明应用内存可能存在不足,此时,增加应用配置的内存,可以提高应用运行的稳定性。
需要说明的是,为保证上述在内存检测过程中获取及/产生的数据及结果的私密性和安全性,比如获取到的监测值集合、应用信息、应用的允许环境变量、拟合得到的内存阈值等,上述数据和结果还可以存储于一区块链的节点中。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本发明提供的所述内存使用率的检测装置中,获取模块获取应用在运行时间段内堆内存使用率的监测值集合,所述运行时间段包括多个垃圾回收期间,所述监测值集合包括每次垃圾回收之前的第一监测子集以及每次垃圾回收之后的第二监测子集;第一判断模块判断所述第一监测值子集中的第一监测值是否大于第一内存阈值;若所述第一监测值子集中的第一监测值大于第一内存阈值,排序模块按时间顺序排列所述第二监测值子集包含的预设数量的第二监测值;第二判断模块判断所述预设数量的第二监测值是否为持续增长且所述预设数量的第二监测值是否大于第二内存阈值,其中,所述第二内存阈值大于所述第一内存阈值;若所述预设数量的第二监测值为持续增长且所述预设数量的第二监测值大于第二内存阈值,确定模块确定所述应用的内存使用率为高使用率。通过应用运行时垃圾回收期间的多个堆内存使用率的变化情况从而能够准确检测内存使用率。
上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取计算机可读存储介质中。上述软件功能模块存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。
如图4所示,是本发明实现内存使用率的检测方法的较佳实施例的终端3的结构示意图。在本实施例中,终端3包括至少一个发送装置31、至少一个存储器32、至少一个处理器33、至少一个接收装置34以及至少一个通信总线。其中,所述通信总线用于实现这些组件之间的连接通信。
所述终端3是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。所述终端3还可包括网络设备和/或用户设备。其中,所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量主机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。
所述终端3可以是,但不限于任何一种可与用户通过键盘、触摸板或声控设备等方式进行人机交互的电子产品,例如,平板电脑、智能手机、监控设备等终端。
所述终端3所处的网络包括,但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
其中,所述接收装置34和所述发送装置31可以是有线发送端口,也可以为无线设备,例如包括天线装置,用于与其他设备进行数据通信。
所述存储器32用于存储程序代码。所述存储器32可以是集成电路中没有实物形式的具有存储功能的电路,如RAM(Random-Access Memory,随机存取存储器)、FIFO(First InFirst Out,先进先出存储器)等。或者,所述存储器32也可以是具有实物形式的存储器,如内存条、TF卡(Trans-flash Card)、智能媒体卡(smart media card)、安全数字卡(securedigital card)、快闪存储器卡(flash card)等储存设备等等。
所述处理器33可以包括一个或者多个微处理器、数字处理器。所述处理器33可调用存储器32中存储的程序代码以执行相关的功能。例如,图3中所述的各个模块是存储在所述存储器32中的程序代码,并由所述处理器33所执行,以实现一种内存使用率的检测方法。所述处理器33又称中央处理器(CPU,Central Processing Unit),是一块超大规模的集成电路,是运算核心(Core)和控制核心(Control Unit)。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种内存使用率的检测方法,其特征在于,所述内存使用率的检测方法包括:
获取应用在运行时间段内堆内存使用率的监测值集合,所述运行时间段包括多个垃圾回收期间,所述监测值集合包括每次垃圾回收之前的第一监测子集以及每次垃圾回收之后的第二监测子集;
判断所述第一监测值子集中的第一监测值是否大于第一内存阈值;
若所述第一监测值子集中的第一监测值大于第一内存阈值,按时间顺序排列所述第二监测值子集包含的预设数量的第二监测值;
判断所述预设数量的第二监测值是否为持续增长且所述预设数量的第二监测值是否大于第二内存阈值,其中,所述第二内存阈值大于所述第一内存阈值;
若所述预设数量的第二监测值为持续增长且所述预设数量的第二监测值大于第二内存阈值,确定所述应用的内存使用率为高使用率。
2.如权利要求1所述的内存使用率的检测方法,其特征在于,所述判断所述第一监测值子集中的第一监测值是否大于第一内存阈值之后,所述内存使用率的检测方法还包括:
若所述第一监测值子集中的第一监测值不大于第一内存阈值,确定所述应用的内存使用率为低使用率;
减少所述应用的配置内存。
3.如权利要求1所述的内存使用率的检测方法,其特征在于,所述内存使用率的检测方法还包括:
获取所述应用的信息以及所述应用的运行环境变量;
通过基于特定的数据预测模型对所述应用的信息、所述应用的运行环境变量进行数据拟合得到所述第二内存阈值,其中,所述数据预测模型包括至少一个拟合所述应用的信息、所述应用的运行环境变量以及所述第二内存阈值之间数据关系的核函数。
4.如权利要求1所述的内存使用率的检测方法,其特征在于,所述内存使用率的检测方法还包括:
获取所述应用的历史运行信息,所述历史运行信息包含所述应用从运行至退出的第一时间;
根据所述第一时间确定所述预设数量。
5.如权利要求1至3中任一项所述的内存使用率的检测方法,其特征在于,所述确定所述应用的内存使用率为高使用率之后,所述内存使用率的检测方法还包括:
发送内存预警消息或者增加所述应用配置的内存。
6.如权利要求5所述的内存使用率的检测方法,其特征在于,所述增加所述应用配置的内存,包括:
通过内存池分配增量内存块;
将所述增量内存块添加至所述应用的已分配内存。
7.如权利要求3所述的内存使用率的检测方法,其特征在于,所述特定的数据预测模型为高斯过程回归模型。
8.一种内存使用率的检测装置,其特征在于,所述内存使用率的检测装置包括:
获取模块,用于获取应用在运行时间段内堆内存使用率的监测值集合,所述运行时间段包括多个垃圾回收期间,所述监测值集合包括每次垃圾回收之前的第一监测子集以及每次垃圾回收之后的第二监测子集;
第一判断模块,用于判断所述第一监测值子集中的第一监测值是否大于第一内存阈值;
排序模块,用于若所述第一监测值子集中的第一监测值大于第一内存阈值,按时间顺序排列所述第二监测值子集包含的预设数量的第二监测值;
第二判断模块,用于判断所述预设数量的第二监测值是否为持续增长且所述预设数量的第二监测值是否大于第二内存阈值,其中,所述第二内存阈值大于所述第一内存阈值;
确定模块,用于若所述预设数量的第二监测值为持续增长且所述预设数量的第二监测值大于第二内存阈值,确定所述应用的内存使用率为高使用率。
9.一种终端,其特征在于,所述终端包括存储器及处理器,所述存储器用于存储至少一个计算机可读指令,所述处理器用于执行所述至少一个计算机可读指令以实现如权利要求1至7中任一项所述的内存使用率的检测方法。
10.一种计算机可读存储介质,其上存储有计算机可读指令,其特征在于:所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的内存使用率的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110632467.8A CN113342604B (zh) | 2021-06-07 | 2021-06-07 | 内存使用率的检测方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110632467.8A CN113342604B (zh) | 2021-06-07 | 2021-06-07 | 内存使用率的检测方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342604A true CN113342604A (zh) | 2021-09-03 |
CN113342604B CN113342604B (zh) | 2022-06-24 |
Family
ID=77474846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110632467.8A Active CN113342604B (zh) | 2021-06-07 | 2021-06-07 | 内存使用率的检测方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342604B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116089319A (zh) * | 2022-08-30 | 2023-05-09 | 荣耀终端有限公司 | 内存处理方法及相关装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090094589A1 (en) * | 2007-10-04 | 2009-04-09 | Satish Chandra Gupta | Optimizing heap memory usage |
US20150026429A1 (en) * | 2013-07-18 | 2015-01-22 | International Business Machines Corporation | Optimizing memory usage across multiple garbage collected computer environments |
CN108073441A (zh) * | 2016-11-14 | 2018-05-25 | 阿里巴巴集团控股有限公司 | 一种虚拟机内存监管方法与设备 |
CN109298959A (zh) * | 2017-07-25 | 2019-02-01 | 华为技术有限公司 | 一种内存异常检测方法及设备 |
CN111104736A (zh) * | 2019-12-13 | 2020-05-05 | 北京瑞莱智慧科技有限公司 | 基于时间序列的异常数据检测方法、装置、介质和设备 |
CN111309487A (zh) * | 2020-03-20 | 2020-06-19 | 捷开通讯(深圳)有限公司 | 内存清理方法、装置、存储介质及移动终端 |
CN112650645A (zh) * | 2020-12-24 | 2021-04-13 | 大连市共进科技有限公司 | 堆内存使用情况监测方法、装置和5g基站设备 |
-
2021
- 2021-06-07 CN CN202110632467.8A patent/CN113342604B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090094589A1 (en) * | 2007-10-04 | 2009-04-09 | Satish Chandra Gupta | Optimizing heap memory usage |
US20150026429A1 (en) * | 2013-07-18 | 2015-01-22 | International Business Machines Corporation | Optimizing memory usage across multiple garbage collected computer environments |
CN108073441A (zh) * | 2016-11-14 | 2018-05-25 | 阿里巴巴集团控股有限公司 | 一种虚拟机内存监管方法与设备 |
CN109298959A (zh) * | 2017-07-25 | 2019-02-01 | 华为技术有限公司 | 一种内存异常检测方法及设备 |
CN111104736A (zh) * | 2019-12-13 | 2020-05-05 | 北京瑞莱智慧科技有限公司 | 基于时间序列的异常数据检测方法、装置、介质和设备 |
CN111309487A (zh) * | 2020-03-20 | 2020-06-19 | 捷开通讯(深圳)有限公司 | 内存清理方法、装置、存储介质及移动终端 |
CN112650645A (zh) * | 2020-12-24 | 2021-04-13 | 大连市共进科技有限公司 | 堆内存使用情况监测方法、装置和5g基站设备 |
Non-Patent Citations (1)
Title |
---|
曹帮琴等: "Android应用中优化Bitmap使用避免内存溢出", 《河南工程学院学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116089319A (zh) * | 2022-08-30 | 2023-05-09 | 荣耀终端有限公司 | 内存处理方法及相关装置 |
CN116089319B (zh) * | 2022-08-30 | 2023-10-31 | 荣耀终端有限公司 | 内存处理方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113342604B (zh) | 2022-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148577B (zh) | 数据异常检测方法、装置、电子设备及存储介质 | |
CN110806954B (zh) | 评估云主机资源的方法、装置、设备及存储介质 | |
CN109684162B (zh) | 设备状态预测方法、系统、终端及计算机可读存储介质 | |
CN110618867A (zh) | 一种预测资源使用量的方法和装置 | |
CN112948275A (zh) | 测试数据生成方法、装置、设备及存储介质 | |
CN111967543A (zh) | 用户资源配额确定方法、装置及电子设备 | |
CN113342604B (zh) | 内存使用率的检测方法、装置、终端及存储介质 | |
CN112700131A (zh) | 基于人工智能的ab测试方法、装置、计算机设备及介质 | |
CN112631731A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN113268403A (zh) | 时间序列的分析预测方法、装置、设备及存储介质 | |
CN114612194A (zh) | 产品推荐方法、装置、电子设备及存储介质 | |
CN115237724A (zh) | 基于人工智能的数据监控方法、装置、设备及存储介质 | |
CN115471215B (zh) | 一种业务流程处理方法及装置 | |
CN116843395A (zh) | 一种业务系统的告警分级方法、装置、设备及存储介质 | |
CN110704614B (zh) | 对应用中的用户群类型进行预测的信息处理方法及装置 | |
CN111652282A (zh) | 基于大数据的用户偏好分析方法、装置及电子设备 | |
CN111756760A (zh) | 基于集成分类器的用户异常行为检测方法及相关设备 | |
CN111950707A (zh) | 基于行为共现网络的行为预测方法、装置、设备及介质 | |
CN113780666B (zh) | 一种缺失值的预测方法及装置、可读存储介质 | |
CN115757075A (zh) | 任务异常检测方法、装置、计算机设备及存储介质 | |
CN113094597B (zh) | 基于机器学习的千人千面门户处理方法、装置及相关设备 | |
CN114490078A (zh) | 一种微服务的动态缩扩容方法、装置及设备 | |
CN114662095A (zh) | 基于操作数据的安全监测方法、装置、设备及存储介质 | |
CN113742187A (zh) | 应用系统的容量预测方法、装置、设备及存储介质 | |
CN113657546A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |