zoukankan      html  css  js  c++  java
  • java 关于内存泄漏和内存溢出

    内存溢出和内存泄漏的区别

    1. 内存溢出:out of memory ,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。

    例如:
    1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
    2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
    3.代码中存在死循环或循环产生过多重复的对象实体;
    4.使用的第三方软件中的BUG;
    5.启动参数内存值设定的过小

    2. 内存泄漏:memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

    例如:

    1. 静态集合类:集合容器中的对象在程序结束前得不到释放,会造成内存堆积;
      Vector v=new Vector(10);
      for(int i=0;i<10;i++){
        Object o=new Object();
         v.add(o);
       }
    
    
    1. 各种连接:数据库连接,网络连接,以及io连接,连接后得不到关闭,
    2. 监听器:在使用多个监听器后,释放了对象,而没有删除监听器,也可能导致内存溢出;
    3. 变量不合理的作用域:如果一个变量的定义的作用范围大于其使用范围,还有,没有及时把对象设置为null,可能这是我们比较经常出现的问题,所以有一些变量我们可以设置为方法作用范围内,当方法使用完,就释放了。
  • 相关阅读:
    vue中点击复制粘贴功能
    node.js之爬虫
    node.js初识12
    webapp定位
    Nginx工作原理和优化
    Android 命名规范 (提高代码可以读性)
    VS2015如何自定义类模板、我的模板——原来这么简单!
    VS2010中新控件的编程------颜色按钮类和颜色对话框
    WinForm创建自定义控件
    Android--MVP设计模式实践
  • 原文地址:https://www.cnblogs.com/liu-ya/p/9672296.html
Copyright © 2011-2022 走看看