`

什么是内存泄露问题?

阅读更多

·简介................................................

       在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏与许多其他问题有着相似的症状,并且通常情况下只能由那些可以获得程序源代码的程序员才可以分析出来。然而,有不少人习惯于把任何不需要的内存使用的增加描述为内存泄漏,即使严格意义上来说这是不准确的。
       一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。

·后果...............................................

       内存泄漏会因为减少可用内存的数量从而降低计算机的性能。最终,在最糟糕的情况下,过多的可用内存被分配掉导致全部或部分设备停止正常工作,或者应用程序崩溃。
       内存泄漏可能不严重,甚至能够被常规的手段检测出来。在现代操作系统中,一个应用程序使用的常规内存在程序终止时被释放。这表示一个短暂运行的应用程序中的内存泄漏不会导致严重后果。
       在以下情况,内存泄漏导致较严重      后果:
       * 程序运行后置之不理,并且随着时间的流失消耗越来越多的内存(比如服务器上的后台任务,尤其是嵌入式系统中的后台任务,这些任务可能被运行后很多年内都置之不理);
       * 新的内存被频繁地分配,比如当显示电脑游戏或动画视频画面时;
       * 程序能够请求未被释放的内存(比如共享内存),甚至是在程序终止的时候;
       * 泄漏在操作系统内部发生;
       * 泄漏在系统关键驱动中发生;
       * 内存非常有限,比如在嵌入式系统或便携设备中;
       * 当运行于一个终止时内存并不自动释放的操作系统(比如AmigaOS)之上,而且一旦丢失只能通过重启来恢复。

分享到:
评论

相关推荐

    opencv3和opencv4多线程内存泄漏问题

    opencv3和opencv4多线程内存泄漏问题:以cv::resize函数测试结果为例。 使用中可修复或者可避免内存泄漏:1)使用opencv2的版本;2)在代码中设置修复该问题.

    windbg内存泄漏问题

    windbg内存泄漏问题windbg内存泄漏问题windbg内存泄漏问题windbg内存泄漏问题windbg内存泄漏问题windbg内存泄漏问题windbg内存泄漏问题windbg内存泄漏问题windbg内存泄漏问题

    android中用getApplicationContext()会不会避免某些内存泄漏问题?

    RT,在android开发中,如果在使用context的地方全部用getApplicationContext()会不会避免某些内存泄漏问题? 首先,Activity的Context和Application的Context肯定不是一个东西,一个是当前活动的 Context,它的生命...

    electron-vue开发环境内存泄漏问题汇总.docx

    electron-vue开发环境内存泄漏问题汇总.docx

    GDB查找内存泄露

    后台程序中经常会存在一部分内存泄露,但是不能很好的定位造成内存泄露的代码,并进行修改,内存泄露不进行修改就会造成程序运行时占用的内存不断升高,逐渐的导致系统的不稳定,现将前一段时间通过GDB调试工具查找内存...

    JProfiler对应用服务器内存泄漏问题诊断解决方案.docx

    JProfiler对应用服务器内存泄漏问题诊断解决方案

    Android webview 内存泄露的解决方法

    Android webview 内存泄露的解决方法 最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递...

    OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)【转】

    OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage) 在利用opencv时,有时候即使你觉得释放了资源,依然会造成内存泄露,原因究竟何在,这里给你答案!

    关于Java内存泄漏的讨论

    什么是内存泄漏?造成内存泄漏的原因?如何解决内存泄漏?以及如何避免内存泄漏等。。。

    Linux 内存泄露查找

    linux 内存泄露排查文档。 介绍mtrace的使用。根据实际问题介绍如果定位问题。

    几个内存泄漏的例子

    几个内存泄漏的例子  new和delete要成对使用...经常看到一些C++方面的书籍中这样提及到内存泄漏问题,这样的说法的意思是比较明白,但对于初学C++程序员还是很难掌握,所以下面举几个反面的例子,希望对大家有帮助。

    linux 内核 内存泄露检测

    linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测

    C++内存泄露检测器

    C++ 内存 泄露 检测器 对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题

    Tomcat内存泄露问题排查

    借助第三方工具进行内存分析,找出导致内存泄露的具体代码段。 MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的Java heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。...

    Android解决大量帧动画内存泄漏问题

    帧动画太多造成内存泄漏问题,内含所需的JAR包:org.apache.commons.io.IOUtils,将Inputstream转为byte字节数组,减少内存泄漏 和关键代码,仅供参考,如有建议请在下方留言或添加咨询~~~

    console.log 一定会导致内存泄漏?不打开 devtools 就不会

    不打开 devtools 怎么确定内存泄漏问题呢? 看下内存大小不就知道了? 通过 performance.memory.totalJSHeapSize 是可以拿到堆内存大小的。 我们通过分析 console.log 的代码执行后的堆内存大小变化就行。

    javascript内存泄露问题的解析

    javascript内存泄露问题的解析 javascript内存泄露问题的解析javascript内存泄露问题的解析

    Windows内存泄漏排查工具

    LeakDiag和LDGrapher,windows内存泄漏排查工具,用于进行一些泄漏位置的查找以及可视化展示。

    详解QT内存泄露问题

    有可能出现内存泄露的问题列举 及解决方法

Global site tag (gtag.js) - Google Analytics