《Effective java》读书笔记-(三)
2016-05-03 21:28
309 查看
java强大之处可以帮助我们管理内存,并不是意味着,程序猿可以放弃内存的管理,同样需要我们手动管理内存。不然的话,出现内存泄漏,十分影响性能。
什么事内存泄漏呢?简单点说,就是一个失去引用的对象,没有及时回收其内存,以致该对象永远不会回收,也许你觉得出现这样的错误,无关紧要,可是你要想到,你在此处出现了这样的失误,可能在其他地方也会忽略,需要及时的清理过期引用。
解决的方式,一种当然是及时释放内存。比如从栈中pop一个对象,就立即将该对象的内存清除,再返回栈顶对象。另一种方式是使该对象结束于生命周期。此种方式在android中很常见,比如当前activity中的context对象。
造成内存泄漏,还来源于缓存,对象存放于缓存中,容易遗忘,可能长时间不使用,仍存在缓存中。可以启动一条后台线程来完成清除缓存,也可以在添加新条目的时候清理旧的缓存。
另外内存泄漏常见来源是监听器和其他回调。某个api注册了,没有显示的取消注册,久而久之,就会积聚。解决方式是使用弱引用,当内存无论充足与否时候,会回收内存。
什么事内存泄漏呢?简单点说,就是一个失去引用的对象,没有及时回收其内存,以致该对象永远不会回收,也许你觉得出现这样的错误,无关紧要,可是你要想到,你在此处出现了这样的失误,可能在其他地方也会忽略,需要及时的清理过期引用。
解决的方式,一种当然是及时释放内存。比如从栈中pop一个对象,就立即将该对象的内存清除,再返回栈顶对象。另一种方式是使该对象结束于生命周期。此种方式在android中很常见,比如当前activity中的context对象。
造成内存泄漏,还来源于缓存,对象存放于缓存中,容易遗忘,可能长时间不使用,仍存在缓存中。可以启动一条后台线程来完成清除缓存,也可以在添加新条目的时候清理旧的缓存。
另外内存泄漏常见来源是监听器和其他回调。某个api注册了,没有显示的取消注册,久而久之,就会积聚。解决方式是使用弱引用,当内存无论充足与否时候,会回收内存。
相关文章推荐
- 基于bootstrap的网页开发之图片轮播
- 237. Delete Node in a Linked List
- PHP、JavaScript、HTML三者的比较
- HTML第七章案例分析
- Nodejs学习item 1 -- 入门手上
- CSS三列布局
- CSS3滤镜-水平和垂直翻转图片
- ButterKnife 8.0.1
- css3滤镜-投影(DropShadow)滤镜
- DIV+CSS中的相对定位和绝对定位
- JavaScript instanceof 运算符深入剖析
- Google机器学习教程心得(三) 好的feature
- 通过ffi在nodejs中调用动态链接库(.so文件)
- Java Web前端到后台常用框架介绍
- Google机器学习教程心得(三) 好的feature
- 点击删除弹出确认框,’是‘异步提交,‘否’不删除,并弹出不提交原因
- 共同学习Java源代码--常用工具类--StringBuffer(一)
- css3滤镜-色彩(Chroma)滤镜
- 美团酒店Node全栈开发实践
- 使用CSS3滤镜美化效果