java强大之处可以帮助我们管理内存,并不是意味着,程序猿可以放弃内存的管理,同样需要我们手动管理内存。不然的话,出现内存泄漏,十分影响性能。
什么事内存泄漏呢?简单点说,就是一个失去引用的对象,没有及时回收其内存,以致该对象永远不会回收,也许你觉得出现这样的错误,无关紧要,可是你要想到,你在此处出现了这样的失误,可能在其他地方也会忽略,需要及时的清理过期引用。
解决的方式,一种当然是及时释放内存。比如从栈中pop一个对象,就立即将该对象的内存清除,再返回栈顶对象。另一种方式是使该对象结束于生命周期。此种方式在android中很常见,比如当前activity中的context对象。
造成内存泄漏,还来源于缓存,对象存放于缓存中,容易遗忘,可能长时间不使用,仍存在缓存中。可以启动一条后台线程来完成清除缓存,也可以在添加新条目的时候清理旧的缓存。
另外内存泄漏常见来源是监听器和其他回调。某个api注册了,没有显示的取消注册,久而久之,就会积聚。解决方式是使用弱引用,当内存无论充足与否时候,会回收内存。
《Effective java》读书笔记-(三)
最新推荐文章于 2024-10-12 22:35:37 发布