内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。

内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

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

内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。

内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出!比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出.

以发生的方式来分类,内存泄漏可以分为4类:

1. 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。 
2. 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。 
3. 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。 
4. 隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏。

从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到

原帖链接:http://blog.csdn.net/buutterfly/article/details/6617375

内存溢出和内存泄漏的区别相关推荐

  1. 内存溢出和内存泄漏的区别、产生原因以及解决方案

    内存溢出和内存泄漏的区别.产生原因以及解决方案 参考文章: (1)内存溢出和内存泄漏的区别.产生原因以及解决方案 (2)https://www.cnblogs.com/ziyoublog/p/1038 ...

  2. java 内存溢出和内存泄漏_JAVA中的内存溢出和内存泄漏有很大的区别

    JAVA中的内存溢出和内存泄漏分别是什么,有什么联系和区别,我谈谈自己的理解. 内存泄漏(memory leak ):申请了内存不释放,比如100m的内存,分配了10m的内存一直不回收,那么可以用的内 ...

  3. 内存溢出与内存泄漏区别

    内存泄露和内存溢出的区别,内存泄露和内存溢出到底有什么区别啊1. 内存溢出和内存泄露的区别:内存溢出的角度不一样的,申请的内存空间,超出了最大的内存空间,这就叫做内存溢出,内存溢出是在申请内存空间的时 ...

  4. 内存溢出和内存泄漏的区别,产生原因以及解决方案

    一.概念与区别 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但给它存了long才能存下的数,那 ...

  5. JVM——内存溢出和内存泄漏的区别

    今日本帅博主在研究JVM,今天我们就来游走于内存溢出与内存泄漏之间,且看看它们是个啥,且又有啥子区别. 1.内存溢出和内存泄漏是啥 内存溢出 out of memory,是指程序在申请内存时,没有足够 ...

  6. java内存溢出和内存泄漏的区别

    内存溢出和内存泄漏的区别 只针对JAVA来说     内存泄露本意是申请的内存空间没有被正确释放,导致后续程序里这块内存被永远占用(不可达),而且指向这块内存空间的指针不再存在时,这块内存也就永远不可 ...

  7. android内存溢出和内存泄漏的区别,Android 内存溢出和内存泄漏以及Leak Canary的使用...

    一.内存泄漏和内存溢出的区别 内存溢出 out of memory:是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但给它存了long才 ...

  8. 内存溢出和内存泄漏的区别、产生原因以及解决方案 转

    内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出. ...

  9. java内存泄漏跟栈溢出,8.《深入理解Java虚拟机》内存溢出和内存泄露、并行和并发、Minor GC和Full GC、Client模式和Server模式的区别...

    内存溢出和内存泄露的区别 内存溢出:指的是程序在申请内存的时候,没有足够大的空间可以分配了. 内存泄露:指的是程序在申请内存之后,没有办法释放掉已经申请到内存,它始终占用着内存,即被分配的对象可达但无 ...

最新文章

  1. 【MongoDB学习之一】初始MongoDB
  2. 电脑svchost进程占用内存
  3. AOP面向切面编程相关术语介绍
  4. 《数据结构与算法》课程设计任务书——赫夫曼编码/译码器
  5. 如何用ABP框架快速完成项目(2) - 快的定义!
  6. FPGA病房呼叫系统实现
  7. BZOJ 3224: Tyvj 1728 普通平衡树
  8. Redis入门(windows)
  9. 一文速学-时间序列分析算法之加权移动平均法详解+Python代码实现
  10. (高级)Matlab绘制中国地图超全教程详解
  11. 在Android中Unity3D透明背景的实现
  12. 第三方支付和聚合支付
  13. 2021年C/C++Linux服务器开发/后台架构师知识体系整理(持续更新中)
  14. Java生成无限制带参小程序码
  15. linux查看告警日志,linux怎么查看硬件告警
  16. 若依专题 线程池配置
  17. 使用Java对HBase进行操作(三)
  18. 怎么能快速的把pdf转换为word格式
  19. 2021年中国A股上市企业市值百强城市排行榜:北京位居榜首,60个城市有千亿市值企业(附年榜TOP100详单)
  20. 华为云,人工智能入门开发认证试题和答案,HCCDA,AI

热门文章

  1. div 设置a4大小_CSS设置A4纸张尺寸
  2. 基于STM32的OLED显示
  3. 2020年性价比之最相机的比较:索尼6400 与富士 xt30的比较及相关评价摘录
  4. Activity 边边角角
  5. jQuery幻灯片带缩略图平移滑动焦点图
  6. 赠书福利|说出来你可能不信,这本书或许可以「预测」未来
  7. unity技术补全计划
  8. 软件测试-七项测试的基本原则
  9. 程序员摘镜指南:近视手术能不能做?怎么做?
  10. Win10 将D盘多余空间分配给C盘