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,可能这是我们比较经常出现的问题,所以有一些变量我们可以设置为方法作用范围内,当方法使用完,就释放了。
  • 相关阅读:
    PHP cURL 应用
    CURL的学习和应用
    PHP中使用cURL实现Get和Post请求的方法
    免费的论文查重网站
    免费的论文查重网站
    初识MFC学习——Hello World
    N皇后问题--回溯法
    c/c++工程中外部头文件及库添加方法
    WinDriver&PCIE
    初识-----基于Socket的UDP和TCP编程及测试代码
  • 原文地址:https://www.cnblogs.com/liu-ya/p/9672296.html
Copyright © 2011-2022 走看看