加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

内存溢出和内存泄漏的详解及区别

发布时间:2020-12-31 16:06:31 所属栏目:创业 来源:网络整理
导读:内存溢出和内存走漏的详解及区别 内存溢出 out of memory,是指措施在申请内存时,没有足够的内存空间供其行使,呈现out of memory;好比申请了一个integer,但给它存了long才气存下的数,那就是内存溢出。 内存泄漏 memory leak,是指措施在申请内存后,无法

内存溢出和内存走漏的详解及区别

内存溢出 out of memory,是指措施在申请内存时,没有足够的内存空间供其行使,呈现out of memory;好比申请了一个integer,但给它存了long才气存下的数,那就是内存溢出。

内存泄漏 memory leak,是指措施在申请内存后,无法开释已申请的内存空间,一次内存泄漏危害可以忽略,但内存泄漏会萃效果很严峻,无论几多内存,早晚会被占光。

memory leak会最终会导致out of memory!

内存溢出就是你要求分派的内存超出了体系能给你的,体系不能满意需求,于是发生溢出。

    内存走漏是指你向体系申请分派内存举办行使(new),然则行使完了往后却不偿还(delete),功效你申请到的那块内存你本身也不能再见见(大概你把它的地点给弄丢了),而体系也不能再次将它分派给必要的措施。一个盘子用尽各类要领只能装4个果子,你装了5个,功效掉倒地上不能吃了。这就是溢出!例如嗣魅栈,栈满时再做进栈一定发生空间溢出,叫上溢,栈空时再做退栈也发生空间溢出,称为下溢。就是分派的内存不敷以放下数据项序列,称为内存溢出.

   以产生的方法来分类,内存走漏可以分为4类:

1. 常发性内存走漏。产生内存走漏的代码会被多次执行到,每次被执行的时辰城市导致一块内存走漏。

2. 偶发性内存走漏。产生内存走漏的代码只有在某些特定情形或操纵进程下才会产生。常发性和偶发性是相对的。对付特定的情形,偶发性的大概就酿成了常发性的。以是测试情形和测试要领对检测内存走漏至关重要。

3. 一次性内存走漏。产生内存走漏的代码只会被执行一次,可能因为算法上的缺陷,导致总会有一块仅且一块内存产生走漏。好比,在类的结构函数平分派内存,在析构函数中却没有开释该内存,以是内存走漏只会产生一次。

4. 隐式内存走漏。措施在运行进程中不断的分派内存,可是直到竣事的时辰才开释内存。严酷的嗣魅这里并没有产生内存走漏,由于最终措施开释了全部申请的内存。可是对付一个处事器措施,必要运行几天,几周乃至几个月,不实时开释内存也也许导致最终耗尽体系的全部内存。以是,我们称这类内存走漏为隐式内存走漏。

从用户行使措施的角度来看,内存走漏自己不会发生什么危害,作为一样平常的用户,基础感受不到内存走漏的存在。真正有危害的是内存走漏的会萃,这会最终耗损尽体系全部的内存。从这个角度来说,一次性内存走漏并没有什么危害,由于它不会会萃,而隐式内存走漏危害性则很是大,由于较之于常发性和偶发性内存走漏它更难被检测到

感激阅读,但愿能辅佐到各人,感谢各人对本站的支持!

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读