zoukankan      html  css  js  c++  java
  • 内存溢出和内存泄露的区别

    内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory。

    内存溢出常见原因:

    1.内存加载的数据量过于庞大,如一次性从数据库取出过多数据。

    2.集合类中有对象的引用,使用完后未清空,使得JVM不能回收。

    3.代码中存在死循环或循环过多重复的对象实体。

    4.使用的第三方软件中的BUG。

    5.启动参数内存值设定过小。

    内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间。

    内存泄露分为4类:

    1.常发性内存泄露:发生内存泄露的代码多次被执行到,每次执行的时候都会导致一块泄露。

    2.偶发性内存泄露:发生内存泄露的代码只有在特定环境或操作过程下才会发生。常发性和偶发性是相对的,对于特定的环境,偶发性或许就变成常发性的,所以测试环境和测试方法对内存泄漏至关重要。

    3.一次性内存泄露:发生内存泄露的代码只会被执行一次,或者由于逻辑上的缺陷,导致总有一块发生泄露。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄露只会发生一次。

    4.隐式内存泄露:程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格来说这里没有发生内存泄露,因为程序最终释放了所有的申请内存,但是对于一个服务器程序,需要运行几天,几周或者几个月,不及时释放内存也可能导致最终损耗所有内存。所以,我们称这类内存泄露为隐式内存泄露。

    限定目的,能使人生变得简洁。
  • 相关阅读:
    [转载]Linux 线程实现机制分析
    Linux命令学习总结:cp命令
    ORA-01012: not logged on
    TNS-12540: TNS:internal limit restriction exceeded
    ORACLE临时表空间总结
    ORACLE回收站机制介绍
    SQL Server 2008 R2 Service Pack 3 已经发布
    python中的单下划线和双下划线意义和作用
    redis基本命令的演示:
    redis百度百科和维基百科知识总结:
  • 原文地址:https://www.cnblogs.com/lx07/p/9849985.html
Copyright © 2011-2022 走看看