“静态实例” 造成内存泄漏
时间: 2024-09-13 08:19:23 浏览: 37
父子实例的内存控制.rar_父子实例的内存控制
"静态实例"通常是指在类中声明为静态的成员变量,其生命周期与应用程序一同存在,直到应用结束才会被垃圾回收器清理。如果这种静态实例持有对非静态资源(如数据库连接、文件流等)的引用,当静态实例未被显式设置为null或者引用计数不为零时,即使这个实例不再被程序直接使用,它所创建的那些资源也不会被释放,这就可能导致内存泄漏。
例如:
```java
public class Singleton {
private static MyObject instance = new MyObject(); // 静态实例
public static MyObject getInstance() { return instance; }
}
class MyObject {
private Resource resource;
public MyObject() {
// 创建并初始化resource
}
// 使用resource的方法...
}
```
在这个例子中,如果`getInstance()`方法持续被调用,`MyObject`实例会被保持,即使`Singleton`类不再需要`MyObject`实例,`resource`也可能因为静态实例的存在而无法被垃圾回收,导致内存泄漏。
阅读全文