Effective Java 学习笔记 (6)

来源:互联网 发布:淘宝网的绿知了的价格 编辑:程序博客网 时间:2024/04/30 17:27

及时消除不使用的对象的引用, 理论上, 带有内存管理的语言是不存在内存泄漏的, 但是如果对对象的操作不当,也是可能会造成内存泄漏.

如有一个stack, 其pop函数如下.

public Object pop()

{

               if( Element.length() == 0) return null;

               return Element[size—];

}

这样的代码初看好像没有什么问题, 当栈增加再减少后, 原来的数组中仍然存在被POP的那个对象的引用! 正确答案应该是:

public Object pop()

{

               if( Element.length() == 0) return null;

               Object ele = Element[—size];

               Element[size] =null;

                return ele;

}

然而实际上,我们不用在程序中写满类似XXX=null的情况, 类似这样的处理应该是例外的少数做法而不能看成常规做法, 否则程序的结构就不够清晰.

一般说来,只有当一个类自己管理内存时,才要小心内存泄漏.

还两个地方,一个是缓存, 被缓存的物体经常被遗忘.

还有就是listener和callback的函数, 经常是注册后, 在不使用了,忘记了"derigster”, 导致这块相关的内存不无清除

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mutsinghua/archive/2010/01/23/5245558.aspx

原创粉丝点击