码迷,mamicode.com
首页 > 编程语言 > 详细

java 关于内存泄漏和内存溢出

时间:2018-09-19 01:21:20      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:i++   -o   leak   比较   实体   code   申请   使用   第三方软件   

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

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,可能这是我们比较经常出现的问题,所以有一些变量我们可以设置为方法作用范围内,当方法使用完,就释放了。

java 关于内存泄漏和内存溢出

标签:i++   -o   leak   比较   实体   code   申请   使用   第三方软件   

原文地址:https://www.cnblogs.com/liu-ya/p/9672296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!