读书人

Effective Java 学习札记第5条 - 消除

发布时间: 2012-12-21 12:03:49 作者: rapoo

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、程序能在第一时间抛出空指针异常;

?

读书人网 >编程

热点推荐