及时消除不使用的对象的引用, 理论上, 带有内存管理的语言是不存在内存泄漏的, 但是如果对对象的操作不当,也是可能会造成内存泄漏.
如有一个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”, 导致这块相关的内存不无清除