android memory optimised
来源:互联网 发布:在淘宝网上怎么买东西 编辑:程序博客网 时间:2024/06/07 03:22
我们一般是怎么去评价一个app的性能呢?
在保证功能完善的情况下(这一点,一般做过一年以上的开发都能实现),另外就是流畅度了,通俗点说,就是这个app浏览切换起来卡不卡。
虽然现在的Android手机不断更新换代,系统运行内存也越来越大,所以可能一般的优化很难看到效果,只有在比较低端的手机上可以提现出来,但是本着我们对自己的严格要求,还是要在内存优化这方面深入了解下的。
首先,我们要明白一点,关于一个Android应用到底占多少内存的问题。(这个我有在之前的博客,图片详解系列讲到过,这里再重复一下)
其实这跟不同的手机厂商有关,不过一般都是16的倍数,早前的是16M,32M,后来则是64M,96M,甚至100多M居多,我目前用的测试机一个APP能够分配的最大内存是196M。
我们可以调用以下方法去获取当前APP的运行内存情况:
第一个是当前APP申请到的内存,这个值可能是20M,40M等等。
第二个是当前APP未被使用的内存,也就是空闲内存,举个例子,比如说当前app总共申请到的内存是50M,但是实际只使用了35M,那么当前空余的则是15M。
第三个是系统能够分配个当前APP的最大内存,比如我这个测试机是192M。
现在举个具体的例子,假设一个app开始运行后,它先向系统申请20M,此时真正占用的内存是16M,那么就有4M是空闲内存,此时如果我们执行一个比较消耗内存的操作,比如加载一张高清大图,需要6M的内存,这个时候空闲内存4<6M,那么jvm就会想系统再去申请比如说是16M,此时总共占用的内存就是36M,而空闲内存就成了14M。
那么,如果我们此时占用的内存已经到了190M,空闲内存2M,而下一个任务需要10M内存,190-2+10>192M,那么此时jvm会先调用GC线程,去扫描一下看下当前app内部是否有可回收的内存,如果回收结束后,空余内存仍然不足,那么才会报OOM;
那么要如何才能突破某个app的分配内存上限呢,可以通过新开进程实现,即在acitivity或者service里面加上process的标签,不过,值得注意的是,即使两个activity(包括四大组件)属于不同的进程,但是它们永远是运行在同一个主线程中的!
- android memory optimised
- android memory
- android memory
- Producing optimised NDK code for multiple architectures?
- Android Low Memory 测试工具 Eat Memory
- Android memory leak detection
- Android memory heap
- android out of memory
- Android Memory Issue
- Android Memory Usage
- [memory] Android DMA
- android jni memory debug
- Android Low memory killer
- Android中的Memory Test
- Android Memory Cache: LruCache
- Headless Android memory
- Android Memory Management, OutOfMemoryError
- (Android) Low Memory Killer
- 我来啦
- 数据结构看书笔记(四)--栈与队列
- PAT_A 1101. Quick Sort (25)
- linux笔记-特殊权限SUID等详解
- html笔记
- android memory optimised
- linux笔记-facl及用户及Linux终端
- Mybatis初步
- PHP内核--静态变量,常量,魔术常量原理
- Android之内存优化
- java之冒泡排序
- Windows英文版GitHub客户端使用操作流程图文攻略教程现没中文版
- linux笔记-磁盘及文件系统管理详解
- Unity中HideInInspector和SerializeField