内存溢出和内存泄漏的区别是什么,内存溢出和内存泄漏的区别在哪

  内存溢出和内存泄漏的区别是什么,内存溢出和内存泄漏的区别在哪

  内存溢出(Memory overflow out of memory)是指当一个程序申请内存时,没有足够的内存空间供其使用,出现内存不足;比如你申请一个整数,但是给它一个long来保存这个数,那就是内存溢出。

  内存泄漏内存泄漏是指程序在申请内存后无法释放申请的内存空间。一次内存泄漏的危害可以忽略不计,但是内存泄漏累积的后果是非常严重的。再多的内存,迟早都会被占用。

  内存泄漏最终会导致内存不足!

  内存溢出是指你要求分配的内存超过了系统能给你的,系统满足不了需求,所以发生了溢出。

  内存泄漏是指你向系统申请分配内存使用(new),但使用后不归还(delete)。这样一来,你就无法访问你自己申请的内存(可能你把它的地址弄丢了),系统也无法再把它分配给需要的程序。一个盘子无论如何只能装四个水果,但是你放了五个,然后它就掉到地上吃不下了。这是溢出!比如当栈满时,将其推入栈中,必然会导致空间溢出,称为溢出。当堆栈为空时,将其推出也会导致空间溢出,称为下溢。即分配的内存不足以放下数据项序列,称为内存溢出。

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

  1.频繁的内存泄漏。有内存泄漏的代码会被执行几次,每次执行都会造成内存泄漏。

  2.偶尔内存泄漏。内存泄漏的代码只会在某些特定的环境或操作过程中发生。复发和散发是相对的。对于特定的环境,偶尔可能会变成经常。因此,测试环境和测试方法对于检测内存泄漏非常重要。

  3.一次性内存泄漏。有内存泄漏的代码只会执行一次,或者由于算法的缺陷,总会有一个且只有一个内存泄漏。比如内存是在类的构造函数中分配的,但是在析构函数中没有释放,所以内存泄漏只会发生一次。

  4.隐式内存泄漏。程序在运行过程中不断分配内存,但直到最后才释放内存。严格地说,这里没有内存泄漏,因为最终的程序释放了所有请求的内存。然而,对于一个服务器程序来说,它需要运行几天、几周甚至几个月。不能及时释放内存也可能导致系统中所有内存的最终耗尽。因此,我们将这种内存泄漏称为隐式内存泄漏。

  从用户使用程序的角度来看,内存泄露本身不会造成任何伤害。作为一般用户,根本感觉不到内存泄露。真正有害的是内存泄漏的积累,最终会消耗掉系统的所有内存。从这个角度来说,一次性内存泄漏是无害的,因为它不会累积,而隐式内存泄漏是非常有害的,因为它比频繁和偶尔的内存泄漏更难检测。

  重点关注以下几点:

  1.检查数据库查询中是否有针对所有数据的查询。一般来说,如果一次取100,000条记录到内存中,可能会导致内存溢出。这个问题是隐藏的。在上线之前,数据库里的数据比较少,不容易出问题。上线后数据库中数据较多,一次查询就可能造成内存溢出。因此,数据库查询应该尽可能分页。

  2.检查代码中是否有无限循环或递归调用。

  3.检查是否存在重复生成新对象实体的大循环。

  4.检查数据库查询中是否有针对所有数据的查询。一般来说,如果一次取100,000条记录到内存中,可能会导致内存溢出。这个问题是隐藏的。在上线之前,数据库里的数据比较少,不容易出问题。上线后数据库中数据较多,一次查询就可能造成内存溢出。因此,数据库查询应该尽可能分页。

  5.检查列表、地图等集合对象使用后是否未清除。像List和MAP这样的集合对象总是有对对象的引用,所以这些对象不能被GC回收。

  步骤4:使用内存查看工具动态查看内存使用情况。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • w3wp.exe占用cpu过高,w3wp.exe占用内存过高
  • w3wp.exe占用cpu过高,w3wp.exe占用内存过高,认识w3wp.exe进程,从根本上解决占用资源较大问题
  • windows10查看内存占用,win11和win10内存占用
  • microsoft defender antivirus占用内存,microsoft defender antivirus service占内存
  • win7和win10内存占用差多少,win10占用内存比win7大多少
  • lua内存回收机制,
  • lua内存回收机制,,简单讲解Lua中的垃圾回收机制
  • 高频内存玩游戏,玩游戏有必要买高频率内存吗
  • 咪咕爱看占内存怎么清理,咪咕爱看怎么取消
  • 内存频率是什么意思,频率和内存频率
  • 笔记本内存错误怎么解决,内存写入错误
  • java 内存泄漏排查,java内存泄露排查方法
  • java 内存泄漏排查,java内存泄露排查方法,Java内存泄漏问题排查与解决
  • win108g物理内存虚拟内存怎么设置最好,window108g虚拟内存设置
  • win11非常占用内存,windows11内存
  • 留言与评论(共有 条评论)
       
    验证码: