一种内存异常检测方法、装置、设备及存储介质制造方法及图纸

技术编号:38610253 阅读:17 留言:0更新日期:2023-08-26 23:39
本公开提出一种内存异常检测方法、装置、设备及存储介质,该方法包括:响应于内存调用请求,检测待调用内存的状态与内存调用请求对应的调用模式是否匹配;若不匹配,确定待调用内存出现异常;若所述待调用内存的状态与所述内存调用请求对应的调用模式相匹配,且所述待调用内存为待释放内存的情况下,设置延迟释放所述待释放内存的延迟条件;若满足所述延迟条件,检测所述待释放内存是否被重复访问;若被重复访问,确定所述待释放内存出现异常。本公开通过在应用程序调用待释放内存的每个阶段,对应检测相应阶段待释放内存的实际状态与调用模式的匹配程度,来检测相应调用阶段是否出现内存异常,适用性广,而且检测全面。而且检测全面。而且检测全面。

【技术实现步骤摘要】
一种内存异常检测方法、装置、设备及存储介质


[0001]本公开属于计算机
,具体涉及一种内存异常检测方法、装置、设备及存储介质。

技术介绍

[0002]内存管理是指应用程序运行过程中,按照应用程序的运行需求对内存资源进行分配等过程。在应用程序运行过程中,若出现内存异常的情况,会导致应用运行崩溃。内存异常例如包括内存越界、指针错位、内存重复释放等。有鉴于此,检测是否发生内存异常,以及对产生内存异常的问题进行定位,是提高内存管理中性能的项目之一。
[0003]常规的内存异常检测方案,大多是针对预配置的一些运行项目进行检测,而预配置的检测项目覆盖的检测范畴相对实际场景中发生异常的范筹要小,使得常规内存异常检测方案适用性较差。

技术实现思路

[0004]本公开提出一种内存异常检测方法、装置、设备及存储介质,通过预设置内存的状态,在接收到内存调用请求后,针对内存调用请求对应的调用模式与待调用内存的状态是否匹配,确定待调用内存是否异常。在释放内存阶段,对待释放内存进行延迟释放,进而在达到延迟释放条件的情况下,进行重复访问检测,不但适用性广,而且检测全面。
[0005]本公开第一方面实施例提出了一种内存异常检测方法,包括:
[0006]响应于来自应用程序的内存调用请求,检测待调用内存的状态与所述内存调用请求对应的调用模式是否匹配,待调用内存的状态用于标识所述待调用内存是否被占用;
[0007]若所述待调用内存的状态与所述内存调用请求对应的调用模式不匹配,确定所述待调用内存出现异常;
[0008]若所述待调用内存的状态与所述内存调用请求对应的调用模式相匹配,且所述待调用内存为待释放内存的情况下,设置延迟释放所述待释放内存的延迟条件;
[0009]若满足所述延迟条件,检测所述待释放内存是否被重复访问;
[0010]若所述待释放内存被重复访问,确定所述待释放内存出现异常。
[0011]在本公开实施例中,所述方法还包括:
[0012]若开启内存异常定位模式,响应于所述内存调用请求,将所述内存调用请求对应的调用信息存储到所述内存的预设存储区域,所述内存调用信息包括以下至少一项:所述应用程序调用所述待调用内存的业务标识、调用模式、调用时间、调用栈。
[0013]在本公开实施例中,所述待调用内存的状态为使用状态或者释放状态,若所述待调用内存的状态为所述释放状态,所述待调用内存为所述待释放内存,所述待调用内存的状态与所述内存调用请求对应的调用模式不匹配,包括:
[0014]所述内存调用请求对应的调用模式为申请模式,所述待调用内存的状态为使用状态;或者,所述待释放内存的状态为释放状态。
[0015]在本公开实施例中,所述设置延迟释放所述待释放内存的延迟条件,包括:
[0016]将所述待释放内存添加到预设置的待释放队列中;或者,
[0017]按照预设的延迟时长为所述待释放内存设置延迟释放的倒计时。
[0018]在本公开实施例中,在设置延迟释放所述待释放内存的延迟条件之前,还包括:
[0019]若所述待释放内存的存储空间大于或者等于预设阈值,将所述待释放内存的访问权限设为禁止访问;
[0020]若所述待释放内存的存储空间小于所述预设阈值,在所述待释放内存中设置访问标识,所述访问标识用于指示所述待释放内存是否被访问。
[0021]在本公开实施例中,所述检测所述待释放内存是否被重复访问,包括:
[0022]若所述待释放内存的存储空间小于所述预设阈值,检测所述访问标识的内容是否发生变更;
[0023]若所述访问标识的内容发生变更,确定所述待释放内存被重复访问。
[0024]在本公开实施例中,在确定所述待调用内存出现异常之后,还包括:
[0025]获取异常对应的业务标识、调用模式和调用时间;
[0026]从所述业务标识、所述调用模式和所述调用时间确定的调用栈中,读取出现异常的程序。
[0027]本公开第二方面的实施例提供了一种内存异常检测装置,包括:
[0028]检测模块,用于响应于来自应用程序的内存调用请求,检测待调用内存的状态与所述内存调用请求对应的调用模式是否匹配,待调用内存的状态用于标识所述待调用内存是否被占用;
[0029]确定模块,用于若所述待调用内存的状态与所述内存调用请求对应的调用模式不匹配,确定所述待调用内存出现异常;
[0030]设置模块,用于若所述待调用内存的状态与所述内存调用请求对应的调用模式相匹配,且所述待调用内存为待释放内存的情况下,设置延迟释放所述待释放内存的延迟条件;
[0031]所述检测模块,还用于若满足所述延迟条件,检测所述待释放内存是否被重复访问;
[0032]所述确定模块,还用于若所述待释放内存被重复访问,确定所述待释放内存出现异常。
[0033]在本公开实施例中,所述装置还包括:存储模块,用于若开启内存异常定位模式,响应于所述内存调用请求,将所述内存调用请求对应的调用信息存储到所述内存的预设存储区域,所述内存调用信息包括以下至少一项:所述应用程序调用所述待调用内存的业务标识、调用模式、调用时间、调用栈。
[0034]在本公开实施例中,所述设置模块,还用于将所述待释放内存添加到预设置的待释放队列中;以及按照预设的延迟时长为所述待释放内存设置延迟释放的倒计时。
[0035]在本公开实施例中,所述装置还包括:访问权限设置模块和访问标识设置模块,其中,
[0036]所述访问权限设置模块,用于若所述待释放内存的存储空间大于或者等于预设阈值,将所述待释放内存的访问权限设为禁止访问;
[0037]所述访问标识设置模块,用于若所述待释放内存的存储空间小于所述预设阈值,在所述待释放内存中设置访问标识,所述访问标识用于指示所述待释放内存是否被访问。
[0038]在本公开实施例中,所述检测模块,还用于若所述待释放内存的存储空间小于所述预设阈值,检测所述访问标识的内容是否发生变更;所述确定模块,还用于若所述访问标识的内容发生变更,确定所述待释放内存被重复访问。
[0039]在本公开实施例中,所述装置还包括:获取模块,用于获取异常对应的业务标识、调用模式和调用时间;以及从所述业务标识、所述调用模式和所述调用时间确定的调用栈中,读取出现异常的程序。
[0040]本公开第三方面的实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现上述第一方面所述的方法。
[0041]本公开第四方面的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现上述第一方面所述的方法。
[0042]本公开实施例中提供的技术方案,至少具有如下技术效果或优点:
[0043]本公开实施例涉及的待调用内存可以设置状态,待调用内存的状态用于标识该待调用内存是否被占用。这样本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存异常检测方法,其特征在于,包括:响应于来自应用程序的内存调用请求,检测待调用内存的状态与所述内存调用请求对应的调用模式是否匹配,所述待调用内存的状态用于标识所述待调用内存是否被占用;若所述待调用内存的状态与所述内存调用请求对应的调用模式不匹配,确定所述待调用内存出现异常;若所述待调用内存的状态与所述内存调用请求对应的调用模式相匹配,且所述待调用内存为待释放内存的情况下,设置延迟释放所述待释放内存的延迟条件;若满足所述延迟条件,检测所述待释放内存是否被重复访问;若所述待释放内存被重复访问,确定所述待释放内存出现异常。2.根据权利要求1所述的方法,其特征在于,还包括:若开启内存异常定位模式,响应于所述内存调用请求,将所述内存调用请求对应的调用信息存储到所述内存的预设存储区域,所述内存调用信息包括以下至少一项:所述应用程序调用所述待调用内存的业务标识、调用模式、调用时间、调用栈。3.根据权利要求1所述的方法,其特征在于,所述待调用内存的状态为使用状态或者释放状态,若所述待调用内存的状态为所述释放状态,所述待调用内存为所述待释放内存,所述待调用内存的状态与所述内存调用请求对应的调用模式不匹配,包括:所述内存调用请求对应的调用模式为申请模式,所述待调用内存的状态为使用状态;或者,所述待释放内存的状态为释放状态。4.根据权利要求1所述的方法,其特征在于,所述设置延迟释放所述待释放内存的延迟条件,包括:将所述待释放内存添加到预设置的待释放队列中;或者,按照预设的延迟时长为所述待释放内存设置延迟释放的倒计时。5.根据权利要求1所述的方法,其特征在于,在设置延迟释放所述待释放内存的延迟条件之前,还包括:若所述待释放内存的存储空间大于或者等于预设阈值,将所述待释放内存的访问权限设为禁止访问;若所述待释放内存的存储空间小于所述预设阈值,在所述待释放内存中设置访问标识,所述访问标识用于指示所述待释放内存是否被访问。6.根据权利要求5所述的方法,其特征在于,所述检测所述待释放内存是否被重复访问,包括:若所述待释放内存的存储空间小于所述预设阈值,检测所述访问标识的内容是否发生变更;若所述访问标识的内容发生变更,确定所述待释放内存被重复访问。7.根据权利要求2所述的方法,其特征在于,在确定所述待调用内存出现异常之后,还包括:获取异常对应的业务标识、调用模式和调用时间;从所述业务标识、所述调用模式和所述调用时间确定的调用栈中,读取出现异常的程序。
8.一种内存异常检测装置,其特征在于,包括:检测模块,用于响应于来自应用...

【专利技术属性】
技术研发人员:王扬
申请(专利权)人:新华三云计算技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1