内存溢出检测方法、装置、操作系统、设备及存储介质与流程

文档序号:36266903发布日期:2023-12-06 12:44阅读:38来源:国知局
内存溢出检测方法与流程

本发明涉及操作系统领域,尤其涉及一种内存溢出检测方法、装置、操作系统、设备及存储介质。


背景技术:

1、一直以来,内核内存调测领域一直持续存在着两大难题:"内存被改"和"内存泄漏"。内存问题后果非常严重,它可能导致程序崩溃、数据丢失或被恶意攻击者利用,内存问题行踪诡异,发生故障时的现场可能已经不是第一现场,导致难以排查、耗时耗力。因此,及时发现和解决内存溢出问题是非常重要的。

2、内存检测机制用于检测内存泄漏和错误的重要机制。通常通过在内存使用期间跟踪和使用内存分配和释放来检测内存泄漏和错误。内存检测机制可以分为两种类型:静态和动态。

3、静态内存检测机制是在编译时检测内存泄漏和错误的机制。这种机制使用内存分析工具来检查编译器的代码,并检测任何内存泄漏或错误。静态内存检测机制通常可以提高程序的质量和可靠性,因为它们在运行时发现内存泄漏和错误。

4、动态内存检测机制是在程序运行时检测内存泄漏和错误的机制。这种机制使用内存分配和释放跟踪程序来检测内存泄漏和错误。动态内存检测机制通常比静态内存检测机制更灵活,因为它可以在运行时检测到内存泄漏和错误,并及时采取措施来解决问题。

5、现有内存检测机制存在一些缺陷,包括:

6、漏检/误检:漏检是指检测到的内存泄漏问题并不全部是真正的内存泄漏问题。有些内存泄漏可能是由程序的其他问题引起的,或者是因为内存泄漏问题比较复杂,检测工具无法完全检测到。

7、效率低:内存泄漏检测和垃圾回收检测需要在程序运行时进行,因此可能会对程序的性能和效率造成影响。特别是在大型程序和并发环境下,检测过程可能会对程序的性能产生严重影响。

8、时效差:现有内存检测机制无法精准捕获问题发生的第一现场。


技术实现思路

1、有鉴于此,本发明实施例提供了一种内存溢出检测方法、装置、操作系统、设备及存储介质,所述方法包括:从内存池中划分出地址间隔分布的保护页和数据页;每次内存分配时分配一个空闲的数据页,并把所分配的数据页相邻的保护页设置为无效;当所分配的数据页的相邻的保护页被访问时,触发页越界访问异常。本发明实施例的技术方案通过保护页可有效提高内存溢出检测的时效性,缩短内存溢出问题排查时间,克服了其它内存检测方法需要占用大量cpu时间且影响运行时性能的缺点,提高程序的稳定性和可靠性。

2、第一方面,本发明实施例提供了一种内存溢出检测方法,包括:从内存池中划分出地址间隔分布的保护页和数据页;每次内存分配时分配一个空闲的数据页,并把所分配的数据页相邻的保护页设置为无效;当所分配的数据页的相邻的保护页被访问时,触发页越界访问异常。

3、由上,通过保护页可有效提高内存溢出检测的时效性,缩短内存溢出问题排查时间,克服了其它内存检测方法需要占用大量cpu时间且影响运行时性能的缺点,提高程序的稳定性和可靠性。

4、在第一方面的一种可能实施方式中,还包括:当触发页越界访问异常时,通过栈回溯定位异常访问保护页的指令位置。

5、由上,通过栈回溯定位异常访问保护页的指令位置,克服了其它内存检测方法需要占用大量cpu时间且影响运行时性能的缺点的问题,提高程序的稳定性和可靠性。

6、在第一方面的一种可能实施方式中,还包括:当一个释放的数据页为空闲的数据页时,报告异常释放错误。

7、由上,通过在释放数据页判断异常释放,实现对内存无效释放等检测,无需占用大量cpu时间,提高程序的稳定性和可靠性

8、在第一方面的一种可能实施方式中,还包括:当分配的数据页大于本次分配所需内存时,在分配的数据页的剩余位置填充魔数数据;当一个释放的数据页的剩余位置的实际数据与魔数数据不同时,报告页内越界访问错误。

9、由上,通过在释放数据页判断页内越界访问错误,实现对内存页内越界访问错误的检测,无需占用大量cpu时间,提高程序的稳定性和可靠性。

10、在第一方面的一种可能实施方式中,当分配的数据页大于本次分配所需内存时,分配的内存位于所分配的数据页的中间。

11、由上,通过分配的内存位于所分配的数据页的中间,以检测两边的页内越界访问错误。

12、在第一方面的一种可能实施方式中,还包括:空闲的数据页通过空闲内存链表管理。

13、由上,通过空闲内存链表管理空闲的数据页,便于跟踪空闲的数据页的状态。

14、第二方面,本发明实施例提供了一种内存溢出检测装置,包括:内存初始化模块,用于把内存池划分为地址间隔分布的保护页和数据页;内存分配模块,用于每次内存分配时分配一个空闲的数据页和其相邻的空闲的保护页并把所分配的数据页相邻的保护页设置为无效;页越界检测模块,用于当所分配的数据页的相邻的保护页被访问时,触发页越界访问异常。

15、由上,通过保护页可有效提高内存溢出检测的时效性,缩短内存溢出问题排查时间,克服了其它内存检测方法需要占用大量cpu时间且影响运行时性能的缺点,提高程序的稳定性和可靠性。

16、在第二方面的一种可能实施方式中,还包括:页越界定位模块,用于当触发页越界访问异常时,通过栈回溯定位异常访问保护页的指令位置。

17、由上,通过栈回溯定位异常访问保护页的指令位置,克服了其它内存检测方法需要占用大量cpu时间且影响运行时性能的缺点的问题,提高程序的稳定性和可靠性。

18、在第二方面的一种可能实施方式中,还包括:异常释放报告模块,用于当一个释放的数据页为空闲的数据页时,报告异常释放错误。

19、由上,通过在释放数据页判断异常释放,实现对内存无效释放等检测,无需占用大量cpu时间,提高程序的稳定性和可靠性

20、在第二方面的一种可能实施方式中,所述内存分配模块还用于当分配的数据页大于本次分配所需内存时,在分配的数据页的剩余位置填充魔数数据;所述装置还包括:页内越界报告模块,用于当一个释放的数据页的剩余位置的实际数据与魔数数据不同时,报告页内越界访问错误。

21、由上,通过在释放数据页判断页内越界访问错误,实现对内存页内越界访问错误的检测,无需占用大量cpu时间,提高程序的稳定性和可靠性。

22、在第二方面的一种可能实施方式中,当分配的数据页大于本次分配所需内存时,分配的内存位于所分配的数据页的中间。

23、由上,通过分配的内存位于所分配的数据页的中间,以检测两边的页内越界访问错误。

24、在第二方面的一种可能实施方式中,空闲的数据页通过空闲内存链表管理。

25、由上,通过空闲内存链表管理空闲的数据页,便于跟踪空闲的数据页的状态。

26、第三方面,本发明实施例提供了一种操作系统,其被计算机执行时使得所述计算机执行第一方面任一所述方法。

27、第四方面,本发明实施例提供了一种计算设备,包括:总线;通信接口,其与所述总线连接;至少一个处理器,其与所述总线连接;以及至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行本发明第一方面任一所述实施方式。

28、第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行本发明第一方面任一所述实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1