Effective Java 学习笔记 (6)

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

如有一个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”, 导致这块相关的内存不无清除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值