• 内存溢出和内存泄露的区别


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

    内存溢出常见原因:

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

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

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

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

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

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

    内存泄露分为4类:

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

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

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

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

    限定目的,能使人生变得简洁。
  • 相关阅读:
    (转)OpenCV提取视频每一帧及将连续图片合成视频
    OpenCV对图像的性能测试
    (转)OpenCV中的常用函数
    EasyX-加载图像实现人物行走
    “三行情书”——给你三行代码的爱恋~
    EasyX—模拟小球自由落体
    maven的pom.xml配置文件
    spring常用注解
    sql优化
    idea快捷键
  • 原文地址:https://www.cnblogs.com/lx07/p/9849985.html
Copyright © 2020-2023  润新知