前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是内存溢出(Out Of Memory---OOM)和内存泄露 (Memory Leak)

什么是内存溢出(Out Of Memory---OOM)和内存泄露 (Memory Leak)

作者头像
小小鱼儿小小林
发布2020-10-10 11:43:47
6.4K0
发布2020-10-10 11:43:47
举报
文章被收录于专栏:灵儿的笔记灵儿的笔记

1、内存溢出:(Out Of Memory---OOM)

系统已经不能再分配出你所需要的空间,比如系统现在只有1G的空间,但是你偏偏要2个G空间,这就叫内存溢出 例子:一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出。

比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。说白了就是我承受不了那么多,那就报错。

2、内存泄漏: (Memory Leak)

强引用所指向的对象不会被回收,可能导致内存泄漏,虚拟机宁愿抛出OOM也不会去回收他指向的对象 意思就是你用资源的时候为他开辟了一段空间,当你用完时忘记释放资源了,这时内存还被占用着,一次没关系,但是内存泄漏次数多了就会导致内存溢出

(关于强引用、弱引用、软引用的区别和联系可以戳这里查看:点击进入

例子:你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。就相当于你租了个带钥匙的柜子,你存完东西之后把柜子锁上之后,把钥匙丢了或者没有将钥匙还回去,那么结果就是这个柜子将无法供给任何人使用,也无法被垃圾回收器回收,因为找不到他的任何信息。

比如我们在使用ThreadLocal的时候可能就会发生内存泄露,什么是ThreadLocal,可以戳这里了解:点击进入

一般我们所说的内存泄漏指的是堆内存的泄露,堆内存是指程序从堆中分配的,大小随机的用完后必须显示释放的内存,C++/C中有free函数可以释放内存,java中有垃圾回收机制不用程序员自己手动调用释放 如果这块内存不释放,就不能再用了,这就叫这块内存泄漏了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、内存溢出:(Out Of Memory---OOM)
  • 2、内存泄漏: (Memory Leak)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档