Java集合框架操作不当引发的内存泄漏示例
Java集合框架是Java中处理对象集合的一套工具,包括List
、Set
、Map
等接口及其实现类。如果操作不当,可能会导致内存泄漏。以下是一些可能导致内存泄漏的示例:
1.缓存中持有对象的强引用```javapublic class Cache {
private Map
public void put(String key, Object value) {
cache.put(key, value);
}
public Object get(String key) {
return cache.get(key);
}
}``在这个例子中,
Cache类使用
HashMap来存储对象。如果
Object对象不再被其他地方引用,但
Cache`中仍然持有它的强引用,那么这个对象将不会被垃圾回收器回收,导致内存泄漏。
2.监听器未注销```javapublic class EventListenerExample {
private EventListener listener = new EventListener();
public void registerListener() {
someObject.addListener(listener);
}
public void unregisterListener() {
//忘记注销监听器 }
}``在这个例子中,
EventListener被注册到某个对象上,但没有在不再需要时注销。如果
EventListener`持有外部对象的引用,那么即使外部对象不再被使用,也会因为监听器的引用而无法被垃圾回收。
3.静态集合引用```javapublic class StaticCollectionExample {
private static List
还没有评论,来说两句吧...