1、内存泄漏(Memory Leak):是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。

2、内存溢出(Memory Overflow):指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。

3、二者的关系

内存泄漏的堆积最终会导致内存溢出。内存溢出就是你要的内存空间超过了系统实际分配给你的空间,此时系统相当于没法满足你的需求,就会报内存溢出的错误。
内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。就相当于你租了个带钥匙的柜子,你存完东西之后把柜子锁上之后,把钥匙丢了或者没有将钥匙还回去,那么结果就是这个柜子将无法供给任何人使用,也无法被垃圾回收器回收,因为找不到他的任何信息。
内存溢出:一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出。比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。说白了就是我承受不了那么多,那我就报错~

4、内存泄漏的分类(按发生方式来分类)

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

5、内存溢出的原因及解决方法

内存溢出原因:
1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
3.代码中存在死循环或循环产生过多重复的对象实体;
4.使用的第三方软件中的BUG;
5.启动参数内存值设定的过小。

内存溢出的解决方案:

第一步、修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加)

第二步、检查错误日志,查看“OutOfMemory”错误前是否有其 它异常或错误。

第三步、对代码进行走查和分析,找出可能发生内存溢出的位置。

内存泄漏和内存溢出有啥区别?相关推荐

  1. 透彻分析JAVA内存泄漏和内存溢出的区别

    JAVA内存泄漏和内存溢出的区别和联系 1.内存泄漏memory leak : 是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出. 2 ...

  2. JAVA内存泄漏和内存溢出的区别和联系

    内存泄漏和内存溢出的区别与解决方式_jie1175623465的博客-CSDN博客_内存泄露和内存溢出是指什么,它们有什么区别 内存泄漏(memory leak ) 内存溢出 (out of memo ...

  3. 内存泄漏和内存溢出的关系和区别

    作者:不怕天黑_0819 链接:https://www.jianshu.com/p/61d34df7eabe 一.内存泄漏(memory leak) 1.内存泄漏是指程序中已动态分配的堆内存由于某种原 ...

  4. 内存泄漏和内存溢出的联系与区别

    一:内存泄漏(memory leak) 1:内存泄漏是指程序中已动态分配的堆内存由于某种原因未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统奔溃等严重后果. 2:一次内训泄漏似乎不会 ...

  5. python会不会出现内存泄露_Python内存泄漏和内存溢出的解决方案

    一.内存泄漏 像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题. 对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是 ...

  6. python会内存泄漏吗_Python内存泄漏和内存溢出的解决方法

    Python内存泄漏和内存溢出的解决方法 发布时间:2020-10-30 23:08:34 来源:亿速云 阅读:92 作者:Leah 这篇文章将为大家详细讲解有关Python内存泄漏和内存溢出的解决方 ...

  7. python 内存溢出能捕获吗_Python内存泄漏和内存溢出的解决方案

    一.内存泄漏 像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题. 对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是 ...

  8. python内存泄漏解决方案_Python内存泄漏和内存溢出的解决方案

    一.内存泄漏 像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题. 对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是 ...

  9. python多线程内存溢出_Python内存泄漏和内存溢出的解决方案

    一.内存泄漏 像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题. 对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是 ...

  10. JVM——内存泄漏与内存溢出

    内存泄漏与内存溢出 1. 面试题 什么是内存泄漏和什么是内存溢出 (陌陌) Java存在内存泄漏吗,内存泄漏的场景有哪些,如何避免(百度) Java 中会存在内存泄漏吗,简述一下?(猎聘) 内存泄漏是 ...

最新文章

  1. 面试常碰到++p/p--问题到底结果是什么?
  2. springBoot @Scheduled多任务同时开始执行
  3. PathComposePathEffectView 使用
  4. Android开发--Wifi的操作
  5. 【算法python实现】 -- 岛屿的个数
  6. HDU-3507Print Article 斜率优化DP
  7. 快速上手Arduino -- 打印超声波模块测距信息到OLED屏幕上
  8. python练习之析构函数
  9. 恐龙快跑小程序对接流量主源码+前端 v5.0.4 全开源微擎框架
  10. mysql 分组查询例子_分组查询GROUP BY用法例子详解
  11. [Apple开发者帐户帮助]二、管理你的团队(7)管理服务器帐户
  12. Spring MVC 全局异常处理(1) --HandlerExceptionResolver
  13. Anaconda下载安装Pytorch遇到的几个问题及解决办法
  14. 涨见识!Java String转int还有这种写法
  15. 《汇编语言》学习(十三)int指令
  16. 风险投资的TS和DD
  17. 香港流行乐黄金二十年——经典歌手(音乐人)全面回顾 一
  18. sap外币重估流程图_SAP外币评估配置及操作OK
  19. 嵌入式开发之linux根文件系统移植
  20. uniapp实战项目 (仿知识星球App) - - 配置开发工具和全局css样式

热门文章

  1. Docker - Docker网络
  2. Winrar阻止弹窗分析(鼓捣版)
  3. 6SV2.1源码学习笔记
  4. TCP/IP协议、端口等相关【1】
  5. Android设备上部署Pytorch,实现性别识别,男女分类
  6. linux系统灾难恢复,Linux系统灾难恢复技术和方法
  7. arch Linux下将esc和cap locks调换位置[更改键盘键位-CW向]
  8. 【数据结构】——单链表超详细介绍(独家介绍,小白必看!!!)
  9. 程序寄存器与指令寄存器
  10. python 三维数组保存并读取