内存溢出与内存泄漏
来源:互联网 发布:大数据4v 编辑:程序博客网 时间:2024/06/06 04:47
内存泄漏
内存泄漏就是我们所说的,当我们的对象在堆内存中,对象不可达的时候,但是别的对象还持有他的引用,从而造成内存Gc机制无法回收。大致在Android中主要就是分为生命周期不一致造成的。还有一点就是内部类造成的内存泄漏。
1.Handler造成的内存泄漏
就是比如你点击一个按钮,发送Handler的消息,但是还没有发送出去,用户销毁了当前的Activtiy。去寻找当前Handler的对象时,发现他已经被销毁了。所以造成的内存泄漏。
2.WebView造成内存泄漏
Android混合开发时经常用到WebView加载html等页面,而WebView的内存泄漏就是最经常遇到的问题,尤其是当项目中需要用webview加载的页面比较多时。webview下面的callback持有activity引用,造成webview内存无法释放。这个关于WebView的http://blog.csdn.net/xygy8860/article/details/53334476
3.单利模式造成的内存泄漏等
在我们使用单利模式的时候,会传入一个上下文。这个上下文如果传入的是一个Activity的上下文就会造成内存泄漏。因为单利模式是在全局只有一个对象,他是整个项目的生命周期。所以传入上下文是我们的应该是使用的Application的上下文。
4.ViewHolder造成的内存泄漏
ViewHolder造成的内存泄漏主要就是,内部类持有外部类的引用。一般我们不会在ViewHolder中做耗时操作,万一,可能,就有些需求会呢。。就是非静态内部类造成的内存泄漏,像这种情况就是前面添加上static。
内存溢出
在我们安卓中平均分配内存就是16M,当我们的超过他时虚拟机不会给我们在去分配内存,造成的内存溢出。
内存溢出大部分就会出现在图片上造成的内存溢出。像在项目中使用的Bitmap用完一定要释放,一定要释放,一定要释放。他是非常消耗我们Android的内存的。但是如何优雅的使用我们的Bitmap,就是通过二次采样与质量压缩。在我们的项目中需求不同从而采用不同的方案。关于这方面还有一个LruCache的算法。想了解的话(最近最少使用算法)。
http://blog.csdn.net/qq_39238370/article/details/78067066
- 内存溢出与泄漏
- 内存泄漏 与 内存溢出
- 内存泄漏与内存溢出
- 内存溢出与内存泄漏
- 内存溢出与内存泄漏
- 内存泄漏与内存溢出
- 内存泄漏与内存溢出
- 内存泄漏与内存溢出
- 内存溢出与内存泄漏
- 内存溢出与内存泄漏
- 内存溢出与内存泄漏
- 内存溢出与内存泄漏
- 内存溢出与内存泄漏
- 内存泄漏与内存溢出
- 内存溢出与内存泄漏
- 内存泄漏与内存溢出
- Linux内存泄漏与溢出
- 内存溢出与内存泄漏的区别
- Putty连接虚拟机
- 编程输出如下图像。
- PingCAP 分布式数据库TiDB介绍
- codevs 1204寻找子串位置(kmp算法)
- RMQ问题——ST算法
- 内存溢出与内存泄漏
- AngularJS的添加和区间的判断(过滤器)
- L7 环境变量PATH,cp和mv命令,文档查看cat more less head tail
- 洛谷P2678 跳石头(NOIp2015)
- 编译与链接详解
- Calculator
- 再来谈谈vue.js
- PullToRefresh ScrollView的Listview和轮播图组合Mylistview适配
- MySQL之主键、外键、索引