博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
App性能优化之内存优化
阅读量:6719 次
发布时间:2019-06-25

本文共 1049 字,大约阅读时间需要 3 分钟。

hot3.png

为什么要进行呢?其实我们可以反过来想。如果不进行内存优化会产生什么样的问题?

App的运行是有内存限制的,超过限制会产生,导致App崩溃。如果内存不进行优化,运行的内存一旦超出了这个限制,就会导致程序的崩溃。程序的崩溃对于应用程序来说是一个非常严重的。如果App不进行内存优化,在流畅性、响应速度和用户体验上都会有很差的效果。

首先,我们来看一下内存的管理方式。

的内存分配和回收方式。

一个App通常就是一个进程对应一个虚拟机。GC只在heap剩余空间不足时,才会进行垃圾回收。GC触发时,所有的线程都会被暂停。

2、App内存限制机制。

每个App分配的最大内存限制,随着不同的设备而不同。吃内存大户是图片。App中用到的图片也很多。为什么要限制内存呢?我们的手机上有很多个应用。如果一个App把内存用光了,别的App就没有办法运行了。为了避免这种情况的出现,我们必须要限制App的内存。

3、切换应用时后台App清理机制。

App切换时的LRU Cache的方式进行应用间的切换。清理的时候系统会调用onTrimMemory()回调方法。

4、监控内存的几种方法。

其次,App内存的优化方法。

1、数据结构优化。

频繁字符串拼接用StringBuilder。ArrayMap、SparseArray替换HashMap。内存抖动。再小的class也要消耗0.5kb。HashMap一个entry需要额外占用32b。

2、对象复用。

复用系统自带的资源。ListView和GridView 的ConverView复用。避免在onDraw方法里执行对象的创建。

3、什么是内存泄漏,及其应对方法。

在逻辑上,某个内存块已经不用了。由于代码上的失误导致这块内存虽然停止不用了,但是依然被其他东西占用,使得GC无法对它进行回收。

会导致可用的Heap越来越少,频繁触发GC。尤其是Activity泄漏。用Application Context而不是Activity Context。注意Cursor对象是否及时关闭。

最后,OOM问题优化。

1、OOM问题分析。

必然性和可解决性。OOM绝大部分出现在图片上。

2、强引用、软引用的意义。

3、优化OOM问题的方法。

注意临时对象的及时回收。避免BitMap的浪费。Try catch某些大内存的分配。加载Bitmap时候缩放比例、解码格式、局部加载。

转载于:https://my.oschina.net/u/2971691/blog/877169

你可能感兴趣的文章
Android Studio 初体验
查看>>
MySQL常用DDL、DML、DCL语言整理(附样例)
查看>>
解决HP6531s随时禁用或启用触摸板的问题
查看>>
ORM数据层框架的设计热点:更新指定的列的几种设计方案
查看>>
access数据库注入
查看>>
语言的歧义
查看>>
dede后台空白或者登录以后空白,点注销以后也是空白的解决方式
查看>>
微软虚拟化之一Hyper-V 2.0的安装及基本配置
查看>>
Silverlight实用窍门系列:52.Silverlight中的MVVM框架极速入门(以MVVM Light Toolkit为例)...
查看>>
DNS服务-详解
查看>>
mysqldump结合脚本的备份方案
查看>>
httpd-2.4 基础配置图解及实现
查看>>
深入浅出分布式文件系统MogileFS集群
查看>>
nagios被监控端nrpe添加流量监控
查看>>
如何在ROS中使用PCL—数据格式(1)
查看>>
[cocos2d-x]动作+场景切换
查看>>
从传统运维到云运维演进历程之软件定义存储(五)下
查看>>
解决Druid设置Oracle的Clob字段时的小坑
查看>>
简单安装openwebmail
查看>>
【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记46 Persistence持久化
查看>>