Effective Java 学习笔记第5条 --- 消除过期的对象引用
???? 垃圾回收器不会对“过期引用”(永远不会在被解除的引用)的对象进行回收。如:数组中的元素先增加再减少这种情况,下标大于size()的那一部分就是过期引用的对象。
解决方法:
?
public Object pop(){ if(size == 0){ throw new EmptyStackException(); } Object result = elements[--size]; //自减后把原来的引用置为null elements[size] = null; return result;} ??
优点:1、避免内存泄漏而造成的系统崩溃(内存泄漏也常见于缓存,由于缓存没有及时清除无用的条目而出现,可以使用weakHashMap来避免这种情况,参考:利用WeakHashMap避免因缓存条目过期而造成的内存泄漏问题);
????????? 2、程序能在第一时间抛出空指针异常;
?