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

java 内存泄露 学习

时间:2014-07-19 20:33:54      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   os   

1.什么事内存泄露

内存泄露就是对象不用了,但是无法回收该对象占用的内存。

2.java不是有垃圾回收机制,咋还会发生内存泄露呢?

java的垃圾回收机制就是把无用的对象(GC roots可达与否)用的内存回收,但是垃圾回收不是万能的,在一些场合会出现内存泄露,

 

长对象持有短对象的引用,

1、静态集合类

bubuko.com,布布扣
1 Static Vector v = new Vector(10); 
2 for (int i = 1; i<100; i++) 
3 { 
4 Object o = new Object(); 
5 v.add(o); 
6 o = null; 
7 }// 
View Code

静态的hashmap,vetcor,持有的引用,被释放后,依然不能被回收,静态集合生命周期很长,跟应用程序一致,这样它持有的引用一直不会被释放,

2修改set中的对象的属性,这个属性和hashcode有关,这个对象就是不能被回收的垃圾了。因为hashcode变了,这个对象set.reomove(p2)这个对象就找不到了,自然无法删除,就会一直在set中。

http://www.2cto.com/kf/201211/168720.html

3.数据库连接和网络连接没有close掉

4.单例模式中

 

 

 

class A
{
public static void main()
{
   Singleton.getInstance().setA(new A());
}
}
class Singleton
{
A a;
public static getInstace()
{
return new Singleton();
}
public setA(A a)
{
this.A=a;
}
}

java 内存泄露 学习,布布扣,bubuko.com

java 内存泄露 学习

标签:style   blog   http   java   color   os   

原文地址:http://www.cnblogs.com/hansongjiang/p/3849535.html

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