首页 > 系统相关 >内存泄漏检测工具总结

内存泄漏检测工具总结

时间:2022-09-21 18:58:19浏览次数:60  
标签:泄漏 malloc free 内存 虚拟内存 检测工具

视频1:https://www.bilibili.com/video/BV1hY4y1u7XK/?spm_id_from=333.337.search-card.all.click&vd_source=7a1a0bc74158c6993c7355c5490fc600

内存泄漏原因:malloc/new 没有与之匹配的 free/delete

泄漏的是虚拟内存,因为虚拟内存到物理内存的映射是由OS管理的,而我们所编写的程序只是用户程序。

 

一个经典问题:线上内存泄漏,htop/top 虚拟内存一直在涨。如何解决这样的问题?

高效的解决方案:定位到哪一行malloc没有free,定位到哪个指针没有释放。

 

两个问题:

1. 如何确定内存泄漏。“htop/top看到虚拟内存在涨”只能用于猜测

2. 如何定位到哪一行malloc没有free,定位到哪个指针没有释放。

 

线上系统要把 trace 写入文件里,不能打印出来(会淹没在信息流里)

一个线上系统的内存泄漏检测方案(可以解决上述两个问题):

1. 当调用malloc时,在mem文件夹下创建一个文件,文件名是分配的内存地址

2. 当调用free时,删除掉那个文件

如此一来,只要在 “程序运行完后” 检查mem下是否有文件,就能判断是否有内存泄漏

 

除了内存泄漏问题,还可以检测 "double free" 问题,即释放野指针

 

两种方法:

1. 使用 #define malloc() _malloc()

2. 使用 hook

 

暂时看到这里(等下自己敲一遍代码看看)

 

 

 

 

 

  

 

标签:泄漏,malloc,free,内存,虚拟内存,检测工具
From: https://www.cnblogs.com/yinhuachen/p/16716462.html

相关文章

  • Unity中Sprite内存和ab大小异常处理方法
    原因:sprite分辨率超过1024*1024时,就会导致sprite中包含了texture的原始数据(未压缩数据),如下图中的astc_6_6,texture是压缩后的只有1.8m,sprite则直接达到了10.9m解决方法:当sp......
  • 如何为swarm中的service设置需要cpu和内存?
    想象一下这个场景,你有一个服务,想要最好的运行状态,必须需要一定的CPU和内存的数量,这样的场景,如何在service中进行设置? 也就是说,为service设置一个cpu和内存的值,swarm集......
  • JDK8中String的intern()方法详细解读【内存图解+多种例子+1.1w字长文】
    写在前面,欢迎大家关注小编的微信公众号!!谢谢大家!!一、前言String字符串在我们日常开发中最常用的,当然还有他的两个兄弟StringBuilder和StringBuilder。他三个的区别也是面......
  • KVM调整虚拟机的内存大小
    查看虚拟机内存大小virshdominfosuhw-test|grepmemory步骤:首先关闭需要修改的虚拟机virshshutdownsuhw-test或virshdestroysuhw-test修改虚拟机的配......
  • linux系列---【如何查看内存的问题?】
    1.使用free命令free-mfree-gtop  buffers:因为io费时,不可能一个字节一个字节去写入磁盘,所以一般把一段字节存入一个块中放入buffers来做缓冲,再写入磁盘。cach......
  • [Android][客需]内存释放
    客户无感知的杀后台机制,当RAM使用率超过60%,自动关闭5分钟未使用的APP直接上源码懒得解析有空再写  //SWwenjie.guaddforsthstart  privatevoidRamLi......
  • 2 Java内存层面的对象认识
    目录1对象的创建2对象的内存布局3对象的访问定位3.1句柄访问3.2直接指针访问说明:此分析基于HotSpot虚拟机1对象的创建Java对象的创建方式有三种:通过new创建通过......
  • C#非托管泄漏中HEAP_ENTRY的Size对不上是怎么回事?
    一:背景1.讲故事前段时间有位朋友在分析他的非托管泄漏时,发现NT堆的_HEAP_ENTRY的Size和!heap命令中的Size对不上,来咨询是怎么回事?比如下面这段输出:0:000>!h......
  • 034每个进程占用内存排序
    一、  #ps-aux|head-n2  USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND  root10.00.019633213704?......
  • java 一个对象的内存图
     面向对象-07-三种情况的对象内存图_哔哩哔哩_bilibili ......