来了解一下内存溢出和内存泄漏
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用;比如你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出 。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
知乎某用户①
内存泄露:用完扔了,没有归还。
内存溢出:霸占不属于你的资源。
知乎某用户②
泄漏就是内存申请后,用完没有释放,造成可用内存越来越少。
溢出指用户实际的数据长度超过了申请的内存空间大小,导致覆盖了其他正常数据,容易造成程序异常,严重的,攻击者可以以此获取程序控制权。
知乎某用户③
钱丢了vs钱不够了
知乎某用户⑤
内存溢出:你去买鞋,今天你赶时间,没时间试。平时你穿42码的,但是美女导购劝你说 ‘这个款式号码偏大’,于是你买了1个41码的。能不能穿?导购漂亮不漂亮?
内存泄露:你去买鞋,今天发工资了,你高兴,但是昨天你踢球脚扭了还没消肿。同1个品牌同1个款式,平时你穿42码的,今天你试了试42码的,但是穿不进去。你买不买?
内存泄露:你去买鞋,今天发工资了,你高兴,但是昨天你踢球脚扭了还没消肿。同1个品牌同1个款式,平时你穿42码的,今天你试了试42码的,但是穿不进去。你买不买?
知乎某用户⑥
内存溢出,这个好理解,说明存储空间不够大。就像倒水倒多了,从杯子上面溢出了来了一样。
内存泄漏,原理是,使用过的内存空间没有被及时释放,长时间占用内存,最终导致内存空间不足,而出现内存溢出。这个也很好理解,所谓的“泄漏”是相对释放对象来定义的,逃脱了释放对象的释放,漏处理了,也就是泄漏。形象一点理解,就是一个大的排放废水的池子,你用水瓢(相当于释放对象)瓢水,但是水瓢有个洞,漏了。
内存泄漏,原理是,使用过的内存空间没有被及时释放,长时间占用内存,最终导致内存空间不足,而出现内存溢出。这个也很好理解,所谓的“泄漏”是相对释放对象来定义的,逃脱了释放对象的释放,漏处理了,也就是泄漏。形象一点理解,就是一个大的排放废水的池子,你用水瓢(相当于释放对象)瓢水,但是水瓢有个洞,漏了。
分类:
Http/计算机理论
, 杂七杂八
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!