服务器
    作者:李英杰

    技术:内存泄露和内存溢出有何不同?

         [ 中关村在线 原创 ] 暂无评论

      内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。有人比喻是“操作系统可提供给所有进程的存储空间正在被某个进程榨干”,最终结果是程序运行时间越长,占用存储空间越来越多,最终用尽全部存储空间,整个系统崩溃。

    技术:内存泄露和内存溢出有何不同?
    内存溢出导致蓝屏(图:zhidao.baidu.com)

      所以“内存泄漏”是从操作系统的角度来看的。这里的存储空间并不是指物理内存,而是指虚拟内存大小,这个虚拟内存大小取决于磁盘交换区设定的大小。由程序申请的一块内存,如果没有任何一个指针指向它,那么这块内存就泄漏了。那么,遭遇内存又和内存溢出有什么不同?

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

      什么是偶发性和常发性内存泄露?

      所谓偶发性内存泄露是指,发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。

    标签:服务器
    提示:支持键盘“← →”键翻页
    本文导航
    • 第1页:内存泄露和内存溢出

    关注排行榜

    产品品牌

    文章推荐

    互动沙龙

    相关内容 网友评论 返回首页
    专家咨询