移动端测试===Android内存管理: 理解App的PSS
Android内存管理: 理解App的PSS
原文链接:http://www.littleeye.co/blog/2013/06/11/android-memory-management-understanding-app-pss/
当在应用程序上运行Little Eye时,在内存视图中,会报告有关应用程序内存的3个重要统计信息。 Dalvik内存使用情况,即Java堆消耗的内存量,Native内存,即JVM外部进程使用的内存量。

然后是第三个统计量,被称为“PSS”。 什么是PSS?
Propotionate Set Size(比例集大小)
“比例集大小”是Android系统计算的统计信息,以确定是否要杀死您的进程。 只看你的应用程序消耗多少内存,是不正确的方式,因为你的应用程序可能与其他进程使用一些共享内存,责怪你的应用程序正在使用任何共享内存是“不公平”的。 Android系统可能会杀死使用太多内存的应用程序(尤其是如果应用程序在后台),因此Android系统需要找到一种方法来可靠地计算应用程序负责的内存量。
什么是共享内存?
Android是一个基于Linux的系统,Linux使用“共享”页面来跨进程共享相同的内存。 共享内存的一个常见用途是在进程之间共享“代码”内存页(加载只读可执行代码的内存区域)。 外部库和JVM的可执行代码是可以跨进程安全共享的内存区域的示例。 还可以是数据页,其是“写时复制”,其可以在进程之间临时共享,直到一个进程修改共享存储器。
技术应用“真实”内存使用
因此,为了“公平”技术应用使用的内存,Android使用了PSS统计量。基本上,它是您的应用程序消耗的非共享内存和可以“归因于您的应用程序”的共享内存部分(与其他进程共享的内存)/(分享共享内存的进程数量)的和。

现在,Android有一个“更公平”的方式来计算谁消耗了大量的内存,Android将按照PSS由大到小的顺序开始杀死进程。
作为一个开发者意味着什么?
如果你的应用程序得到非常高的PSS分数,你的应用程序可能会被Android系统杀死。 也许这是你可以处理的东西,但是在后台被意外杀死可能会对你的应用程序造成影响,特别是如果你依靠一些后台Activity或Service来进行工作。 确保您的应用程序的PSS不是太高,特别是当您的应用程序进入后台。 进入后台后,释放不在吸引的内存和对象,并断开任何不再需要的共享内存,你不再需要,可能是一个好主意。 这将减少你的意外被Android系统杀死的机会。
要记住的一点是,PSS没有“硬限制” - 不能保证你的应用程序超过某个阈值将被杀死,或者保证低于某个阈值可以生存。 应用程序不在前台时,必须做好任何时间被杀死的准备。如果PSS值较低,它有助于减少那些机会。
移动端测试===Android内存管理: 理解App的PSS的更多相关文章
- 移动端测试===Android内存泄露和GC机制(转)
本文转自:https://www.testwo.com/article/1153 1.前言 Hello,小伙伴们,相信大家在项目测试中都遇到过内存泄露问题,小编也着实爬过很多坑.比如小编所测项目,更换 ...
- Android 内存管理分析(四)
尊重原创作者,转载请注明出处: http://blog.csdn.net/gemmem/article/details/8920039 最近在网上看了不少Android内存管理方面的博文,但是文章大多 ...
- 浅谈Android内存管理
最近在网上看了不少Android内存管理方面的博文,但是文章大多都是就单个方面去介绍内存管理,没有能全局把握,缺乏系统性阐述,而且有些观点有误,仅仅知道这些,还是无法从整体上理解内存管理,对培养系统优 ...
- Android内存管理机制之一:low memory killer
转载自http://www.miui.com/thread-29268-1-1.html 准备写这个专题之前,心里是有点忐忑的.首先Android内存管理机制相当复杂,想要讲清楚比较困难:其次对于绝大 ...
- [Android Memory] Android内存管理、监测剖析
转载自:http://blog.csdn.net/anlegor/article/details/23398785 Android内存管理机制: Android内存管理主要有:LowMemory Ki ...
- Android——内存管理基础
内存收集概念 内存垃圾收集器(garbage collector) 概念:自定内存管理. 功能:分配内存.保证所有被引用的对象还在内存中.可以释放在运行的代码中不再引用的对象的内存. 垃圾收集器避免了 ...
- 深入理解Android内存管理原理(六)
一般来说,程序使用内存的方式遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统.然而在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存是一个很有难度的工 ...
- Android Dalvikvm 内存管理理解
网上非常多文件介绍了 jvm 内存管理的理论,但在 Dalvikvm 中,到底是怎样实现的. 这几天猛看了 Dalvikvm 的源码,说一下我的理解: 在大层面上讲跟理论一样,jvm 把内存分成了一些 ...
- Android内存管理机制
相信一步步走过来的Android从业者,每个人都会遇到OOM的情况.如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力. 今天我们就谈谈在Android平台下内存的管理之道,开始 ...
随机推荐
- js alert()后进行跳转的方法
如果alert()之后再进行跳转本页,按以下方法你将等不到alert(),浏览器就本身刷新本页面了 <script type="text/javascript"> al ...
- BZOJ 1930 吃豆豆(费用流)
首先这题的两条线不相交的限制可以去掉,因为如果相交的话把点换一换是不影响最终结果的. 剩下的费用流建图是显然的,把点拆为两个,建立超级源点s和源点ss汇点t,连边(s,ss,2,0). 对于每个点,连 ...
- BZOJ4736 温暖会指引我们前行(LCT+最大生成树)
类似于瓶颈路,满足条件的路径一定在温度的最大生成树上,那么就是一个LCT维护MST的裸题了. #include<iostream> #include<cstdio> #incl ...
- SOA,ESB,WebService的关系
1. 什么是SOA SOA(Service-Oriented Architecture)既服务导向架构,是指为了解决在inernet环境下业务集成的需要,通过连接能完成特定任务的独立功能实现的一种软件 ...
- [洛谷P2057][SHOI2007]善意的投票
题目大意:有$n(n\leqslant300)$个人,每个人可以选择$0$或$1$,每个人最开始有意愿,有$m(m\leqslant\dfrac{n(n-1)}2)$对好朋友.定义一次的冲突数为好朋友 ...
- Python 编程实战提高测试工作效率实例之svn 文件管理
#coding=utf-8 ''' Created on 2016年8月22日 @author:Tom Gao ''' importre importos importtime "" ...
- bzoj1042: [HAOI2008]硬币购物(DP+容斥)
1600+人过的题排#32还不错嘿嘿 浴谷夏令营讲过的题,居然1A了 预处理出f[i]表示购买价值为i的东西的方案数 然后每次询问进行一次容斥,答案为总方案数-第一种硬币超限方案-第二种超限方案-第三 ...
- java 在centos6.5+eclipse环境下调用opencv实现sift算法
java 在centos6.5+eclipse环境下调用opencv实现sift算法,代码如下: import org.opencv.core.Core; import org.opencv.core ...
- TiXmlHandle的使用-简化tinyxml的代码
借鉴于:http://www.cppblog.com/elva/archive/2008/04/24/47907.html 例如: <?xml version="1.0" s ...
- ubuntu14安装tensorflow并测试
1.ubuntu版本的选择:看了很多博文,建议使用ubuntu14,稳定兼容性好. 2.tensorflow的安装: http://wiki.jikexueyuan.com/project/tenso ...