Android内存优化相关
Android的内存管理方式
- Android系统内存分配与回收方式
- 一个APP通常就是一个进程对应一个虚拟机
- GC只在Heap剩余空间不够时才去垃圾回收
- GC触发时,所有线程都会被暂停!!!
- APP内存限制机制
- 每个App分配的最大内存限制,随设备不同而不同
- 吃内存大户:图片
- 为什么要限制?
- 切换应用时后台APP清理机制
- APP切换时的LRU Cache
- LRU算法:最近使用的排在最前面,最少的可能被清理掉
- GC时,清理时会执行onTrimMemory()回调方法
- APP切换时的LRU Cache
Android系统内存分配与回收方式
adb shell : 进入Android底层Linux系统命令;
ps :查看系统里面进程的命令;
dumpsys meminfo com.xxx.xxx :查看进程的相关信息
APP内存优化方法
- 数据结构
- 频繁字符串拼接用StringBuilder
- ArrayMap、SpareArray替换HashMap
- 内存抖动
- 再小的Class耗费0.5KB
- HashMap一个Entry需要额外占用的32KB
- 对象复用
- 复用系统自带的资源
- ListView/GridView的convertView复用
- 避免在onDraw()方法里面执行对象的创建
- 避免内存泄漏
- 由于代码瑕疵,导致这块内存,虽然是停止不用了,但依然被其他东西引用着,导致GC无法回收它
- 内存泄漏会导致剩余可用Heap越来越少,频繁触发GC
Android内存优化相关的更多相关文章
- android内存优化相关1
第一种策略,是释放显示相关的内存.这是我们针对系统APP采用的一种调优策略. 图形内容,俗称位图是非常占用内存的,针对位图,我们采用异步加载的方法,将位图内容信息和位图的状态信息分别进行存储,将内容信 ...
- 【腾讯Bugly干货分享】Android内存优化总结&实践
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQ 导语 智 ...
- [转]探索 Android 内存优化方法
前言 这篇文章的内容是我回顾和再学习 Android 内存优化的过程中整理出来的,整理的目的是让我自己对 Android 内存优化相关知识的认识更全面一些,分享的目的是希望大家也能从这些知识中得到一些 ...
- 大礼包!ANDROID内存优化(大汇总)
写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在A ...
- ANDROID内存优化——大汇总(转)
原文作者博客:转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! ANDROID内存优化(大汇总——上) 写在最前: 本文的思路主要借鉴了20 ...
- ANDROID内存优化(大汇总——中)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...
- Android内存优化(三)详解内存分析工具MAT
前言 在这个系列的前四篇文章中,我分别介绍了DVM.ART.内存泄漏和内存检测工具的相关知识点,这一篇我们通过一个小例子,来学习如何使用内存分析工具MAT. 1.概述 在进行内存分析时,我们可以使用M ...
- Android内存优化(二)解析Memory Monitor、Allocation Tracker和Heap Dump
前言 要想做好内存优化工作,就要掌握两大部分的知识,一部分是知道并理解内存优化相关的原理,另一部分就是善于运用内存分析的工具.本篇就来介绍内存分析工具:Memory Monitor.Allocatio ...
- Android内存优化(四)解析Memory Monitor、Allocation Tracker和Heap Dump
相关文章 Android性能优化系列 Java虚拟机系列 前言 要想做好内存优化工作,就要掌握两大部分的知识,一部分是知道并理解内存优化相关的原理,另一部分就是善于运用内存分析的工具.本篇就来介绍内存 ...
随机推荐
- SSH 项目整合
SSH整合:spring + springmvc + hibernate 1.1 生成Maven项目:ar_ssh 1.2 添加jar包:pom.xml 与ssm相比,主要添加了spring与hibe ...
- (转) C#之VS自带RDLC报表学习
原文地址:http://blog.csdn.net/hk_5788/article/details/49846905 原文工具VS2010,测试版本工具VS2013 报表是这样设计的: 看看结果: ...
- vs2017配置文件目录
C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\15.0_6d0a0a42
- 添加删除mysql用户
create user 'hive_user'@'%' identified by '密码'; grant all privileges on hive.* to hive_user@'%'; cre ...
- TestLink 的使用详解
二.初始配置(设置用户.产品) 1. 用户设置 在TestLink系统中,每个用户都可以维护自己的私有信息.admin可以创建用户,但不能看到其它用户的密码.在用户信息中,需要设置Email地址,如果 ...
- 大小端,memcpy和构造函数
问题:memcpy一段内存到std::bitset里,bitset里的内存数据和被拷贝的内存数据对应不上 代码如下: #include <iostream> #include <bi ...
- UINavigationController 返回到各级目录
[self.navigationController popViewControllerAnimated:YES]; UINavigationController返回总结: 1.弹出当前视图控制器(弹 ...
- python ftp文件夹文件递归上传推送
- 42.scrapy爬取数据入库mongodb
scrapy爬虫采集数据存入mongodb采集效果如图: 1.首先开启服务切换到mongodb的bin目录下 命令:mongod --dbpath e:\data\db 另开黑窗口 命令:mongo. ...
- Maven上传jar包到私服
1.认证,在M2_HOME/conf/settings.xml配置用户名密码 <server> <id>releases</id> <username> ...