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


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

    内存溢出常见原因:

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

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

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

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

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

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

    内存泄露分为4类:

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

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

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

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

    限定目的,能使人生变得简洁。
  • 相关阅读:
    博客园界面部分优化
    jQuery获取Select选择的Text和 Value
    java开发各层对象含义
    接口与抽象类的区别(完整描述)
    Map相关知识总结
    html引用外部js和css
    RDD内存迭代原理(Resilient Distributed Datasets)---弹性分布式数据集
    spark高可用集群搭建及运行测试
    spark集群的简单测试和基础命令的使用
    spark集群搭建
  • 原文地址:https://www.cnblogs.com/lx07/p/9849985.html
Copyright © 2020-2023  润新知