zoukankan      html  css  js  c++  java
  • java 内存泄露 学习

    1.什么事内存泄露

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

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

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

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

    1、静态集合类

    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;
    }
    }
  • 相关阅读:
    LOAD XML
    LOAD DATA
    INSERT 插入语句
    keras第一课
    android系统开发之开启启动
    Qt使用数据库
    微信订阅号案例之一
    python_install
    QtObject使用
    Qml_JS文件的使用
  • 原文地址:https://www.cnblogs.com/hansongjiang/p/3849535.html
Copyright © 2011-2022 走看看