一种零侵扰的异常内存分配定位方法和系统技术方案

技术编号:38375643 阅读:28 留言:0更新日期:2023-08-05 17:36
本申请涉及一种零侵扰的异常内存分配定位方法和系统,其属于数据监控技术领域,该方法包括:获取异常进程,调取动态内存分配函数的地址和释放内存空间函数的地址;在动态内存分配函数的地址中配置申请钩子,在释放内存空间函数的地址中配置释放钩子;根据申请钩子获取进程申请到的内存地址、申请内存的进程申请内存量大小以及函数调用栈并构建数据结构;当进程申请内存时:将进程申请到的内存地址、申请内存的进程申请内存量大小以及函数调用栈填入数据结构;当进程释放内存量时:将数据结构中的待确认操作数据标记为正常操作数据并删除;预设时间段后,若数据结构中存在待确认操作数据,则输出函数调用栈。本申请能够定位内存分配异常位置。内存分配异常位置。内存分配异常位置。

【技术实现步骤摘要】
一种零侵扰的异常内存分配定位方法和系统


[0001]本申请涉及数据监控
,尤其是涉及一种零侵扰的异常内存分配定位方法和系统。

技术介绍

[0002]进程是计算机中的程序针对数据集合的一次运行活动,是计算机系统进行资源分配的基本单位。进程包括文本区域、数据区域和堆栈区域,其中,文本区域存储进程的代码;数据区域存储在进程活动期间使用的动态分配的内存;堆栈区域存储着进程在活动过程中调用的指令和计算机系统变量。
[0003]进程在活动时需要进行动态内存分配,动态内存分配是指在进程活动的过程中动态地分配或者回收存储空间的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由计算机系统根据进程的需要即时分配,且分配的大小就是进程要求的大小。
[0004]由于计算机系统的存储空间有限,所以针对仅申请内存而不释放内存的进程或者在活动过程中所使用的内存量超出了其所申请的内存量的进程,都将被标记为异常进程。为了监控异常进程,常采用的监控手段有:1.替换内存分配和释放的库函数,例如采用MemCheck工具拦截内存访问接口m本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种零侵扰的异常内存分配定位方法,其特征在于,包括:获取异常进程;调取所述异常进程的符号表,所述符号表包括动态内存分配函数的地址、释放内存空间函数的地址;在所述动态内存分配函数的地址中配置申请钩子,在所述释放内存空间函数的地址中配置释放钩子;根据所述申请钩子获取到进程申请到的内存地址、申请内存的进程申请内存量大小以及函数调用栈,所述函数调用栈用于存放申请内存的进程所在的代码行;根据所述进程申请到的内存地址、申请内存的进程申请内存量大小以及函数调用栈构建数据结构;在所述数据结构中,进程申请到的内存地址、申请内存的进程申请内存量大小以及函数调用栈为待确认操作数据;当进程申请内存量时:将进程申请到的内存地址、申请内存的进程申请内存量大小以及函数调用栈填入数据结构中;当进程释放内存量时:通过所述释放钩子获取到数据结构,将数据结构中的待确认操作数据标记为正常操作数据并删除所述正常数据;预设时间段后,若数据结构中存在待确认操作数据,则输出函数调用栈。2.根据权利要求1所述的一种零侵扰的异常内存分配定位方法,其特征在于,所述获取异常进程包括:判断进程实际占用内存量是否超出预期使用量;若是,则将进程标记为异常进程;若否,则将进程标记为正常进程。3.根据权利要求1所述的一种零侵扰的异常内存分配定位方法,其特征在于,所述申请钩子和所述释放钩子均采用的是hook函数。4.根据权利要求1所述的一种零侵扰的异常内存分配定位方法,其特征在于,所述在所述动态内存分配函数的地址中配置申请钩子包括:采用用户空间探针在所述动态内存分配函数的地址中配置申请钩子。5.根据权利要求1所述的一种零侵扰的异常内存分配定位方法,其特征在于,所述根据所述进程申请到的内存地址、申请内存的进程申请内存量大小以及函数调用栈构建数据结构包括:将所述进程申请到的...

【专利技术属性】
技术研发人员:向阳聂润杰尹纪平
申请(专利权)人:北京云杉世纪网络科技有限公司
类型:发明
国别省市:

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

1