首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java内存泄露有关问题

2012-01-24 
java内存泄露问题有时候为了避免内存泄露,使用静态内部类来取代非静态内部类,为什么呢?[解决办法]非静态内

java内存泄露问题
有时候为了避免内存泄露,使用静态内部类来取代非静态内部类,为什么呢?

[解决办法]
非静态内部类的对象默认包含了它的Container的引用,比如:
class A{
class B{

}
}

B的对象中默认有一个A的引用,垃圾回收的时候,如果处理不当,有可能导致A的对象不能被回收,导致内存泄漏。
[解决办法]
你要一个静态内部类(题外话:static的不叫内部类,叫:nested class)实例的时候,你并不需要一个外部类的实例(Enclosing Instance),比如:

Java code
class T {    static class Nested {        void sayHello() {            System.out.println("hello");        }    }}class C {    public static void main(String... args) {          new T.Nested().sayHello(); //不需要外部类T的实例,这里T只是一个类Nested的限定名称的一部分    } }
[解决办法]
探讨

非静态内部类的对象默认包含了它的Container的引用,比如:
class A{
class B{

}
}

B的对象中默认有一个A的引用,垃圾回收的时候,如果处理不当,有可能导致A的对象不能被回收,导致内存泄漏。

热点排行
Bad Request.