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

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

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

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

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

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

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

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

转载于:https://www.cnblogs.com/yecao8888/p/6074207.html

内存泄露与内存溢出的区别相关推荐

  1. Java基础恶补——内存泄露、内存溢出

     Java基础恶补--内存泄露.内存溢出 (2010-09-15 15:56:26) 转载 标签: 杂谈 要点 内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分 ...

  2. jvm故障 内存泄露和内存溢出总结

    目录 内存泄漏memory leak 内存泄漏的分类(按发生方式来分类) 内存泄露的场景 静态集合类 / 长生命周期的对象持有短生命周期对象的引用 / 单例模式 /类加载器 各种连接,如数据库连接.网 ...

  3. Java内存泄露和内存溢出、JVM命令行工具、.JDK可视化工具、Java Class文件

    1.Java内存泄露和内存溢出对比 1.1 Java 内存泄露 内存泄露是指一个不再被程序使用的对象或变量还在内存中占用空间. 1.1.1判断内存空间是否符合垃圾回收的标准 在Java语言中,判断一个 ...

  4. java内存泄露和内存溢出

    内存泄露 是指:对象没有被用到,但是又无法被GC回收就是内存泄露: 分类:经常发生: 发生内存泄露的代码会被多次执行,每次执行,泄露一块内存偶然发生: 在某些特定情况下才会发生一次性: 发生内存泄露的 ...

  5. java什么时候可能产生内存溢出_JAVA内存泄露和内存溢出

    1)概念: 内存溢出:指在指定大小的内存空间,写入了超出大小的数据,从而导致了内存溢出. 内存溢出:指程序运行过程中无法申请到足够的内存而导致的一种错误. 内存溢出通常发生于OLD段或Perm段垃圾回 ...

  6. java 解决内存泄露_Java内存泄露的理解与解决

    Java内存管理机制 在C++语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期.从申请分配.到使用.再到最后的释放.这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记 ...

  7. Java内存泄露系列--内存泄露的原因及解决方案(大全)

    原文网址:Java内存泄露系列--内存泄露的原因及解决方案(大全)_IT利刃出鞘的博客-CSDN博客 简介 简介 本文介绍Java中内存泄露的一些原因与解决方案. 如果内存泄露的空间足够大,就会导致内 ...

  8. C/C++什么是内存泄露,内存泄露如何避免?

    C/C++什么是内存泄露,内存泄露如何避免? 1. 内存溢出 2. 内存泄漏 3. 造成内存泄露常见的三种情况 3.1 指针重新赋值 3.2 错误的内存释放 3.3 返回值的不正确处理 4. 如何避免 ...

  9. 内存泄露与内存溢出的区别及解决方法

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

最新文章

  1. 【微软出品】AI-神经网络基本原理简明教程
  2. 使用HtmlGenericControl控件动态产生一些HtmlControls
  3. linux下配置 ITK
  4. 进一步考察与UI相关的安全漏洞-下
  5. 跑步碰撞大数据,走进悦跑圈的数据“大观园”
  6. typescript类型断言
  7. anaconda pycharm 动手学深度学习环境配置
  8. spring cloud eureka 服务之间调用_Spring-cloud微服务实战【一】:微服务的概念与演进过程...
  9. 跨站点脚本(XSS)
  10. 计算机英语讲课笔记07
  11. 计算机开机后黑屏 只有鼠标,开机黑屏只有鼠标
  12. fastreport文本字数太多换行_Python教程第10篇:聊聊print换行输出和重复多次打印...
  13. VMware vSphere 5.x 与 vSphere 6.0各版本功能特性对比
  14. 夏普利值:全排列边际效益的平均
  15. Altium Designer安装教程,适合小白的一键安装,简单明了,傻瓜式安装
  16. 手机麦克风结构原理图_麦克风的构造图解 麦克风偏置电路和滤波电路
  17. 记录自己关于Linux的学习和RHCSA、RHCE认证相关
  18. 广告市场VUCA时代来了!怎么办?
  19. 很漂亮网页背景渐变色代码
  20. python 三次根号_开3次方根(多次方根)的代码:二分法,python

热门文章

  1. C# WinForm登录窗口代码
  2. 正确地组织python项目的结构
  3. 图解算法之排序算法(2)——选择排序
  4. ios 获取是否静音模式_高效人士进阶-IOS
  5. TokenInsight:反映区块链行业整体表现的 TI 指数较昨日同期下跌1.03%
  6. SAP License:别闹了,这些都不是数字化转型
  7. SAP License:FI疑难问题小结
  8. Python入门学习笔记(7)
  9. 第一步,统一头文件的大小写
  10. 团队作业(二):项目选题