内存泄漏

为了使得内存管理的开销较小,程序拥有更高的执行效率,有的语言(比如C++)会把内存的分配与回收交给开发人员在编写代码时主动完成的,使程序员可以根据自己的实际使用场景灵活进行内存分配和释放。然而手动分配和释放内存,就有可能导致内存泄漏。

定义

程序在动态分配内存后,由于某种原因未能及时释放内存,导致内存资源长时间被占用而无法再次使用。

打个比方:

有一个宾馆,共有100间房间,顾客每次都是在前台进行登记,然后拿到房间钥匙。如果有些顾客不需要该房间了,既不去前台处登记退房,也不归还钥匙,久而久之,前台处可用房间越来越少,收入也越来越少,濒临倒闭。当程序申请了内存,而不进行归还,久而久之,可用内存越来越少,OS就会进行自我保护,杀掉该进程,这就是我们常说的OOM(out of memory)

分类

内存泄漏可以根据内存资源类型,泄漏原因,产生方式等进行分类,相关方式可以自己百度。现在介绍根据泄漏原因进行的分类

  • 堆内存泄漏:我们经常说的内存泄漏就是堆内存泄漏,在堆上申请了资源,在结束使用的时候,没有释放归还给OS,从而导致该块内存永远不会被再次使用

  • 资源泄漏:通常指的是系统资源,比如socket,文件描述符等,因为这些在系统中都是有限制的,如果创建了而不归还,久而久之,就会耗尽资源,导致其他程序不可用(系统资源是指计算机系统中的各种硬件设备、软件服务、文件系统、网络连接等可供程序使用的资源。它们包括但不限于 CPU、内存、硬盘、显示器、键盘、鼠标、操作系统、网络接口等等,系统资源和内存的区别在于,系统资源包括了计算机系统中所有可供程序使用的资源,而内存是其中的一种资源。)

REF:

(25条消息) 常见的【内存泄漏】姿势_高性能架构探索的博客-CSDN博客

内存泄漏-原因、避免以及定位 (qq.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坠金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值