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的更多相关文章

  1. 移动端测试===Android内存泄露和GC机制(转)

    本文转自:https://www.testwo.com/article/1153 1.前言 Hello,小伙伴们,相信大家在项目测试中都遇到过内存泄露问题,小编也着实爬过很多坑.比如小编所测项目,更换 ...

  2. Android 内存管理分析(四)

    尊重原创作者,转载请注明出处: http://blog.csdn.net/gemmem/article/details/8920039 最近在网上看了不少Android内存管理方面的博文,但是文章大多 ...

  3. 浅谈Android内存管理

    最近在网上看了不少Android内存管理方面的博文,但是文章大多都是就单个方面去介绍内存管理,没有能全局把握,缺乏系统性阐述,而且有些观点有误,仅仅知道这些,还是无法从整体上理解内存管理,对培养系统优 ...

  4. Android内存管理机制之一:low memory killer

    转载自http://www.miui.com/thread-29268-1-1.html 准备写这个专题之前,心里是有点忐忑的.首先Android内存管理机制相当复杂,想要讲清楚比较困难:其次对于绝大 ...

  5. [Android Memory] Android内存管理、监测剖析

    转载自:http://blog.csdn.net/anlegor/article/details/23398785 Android内存管理机制: Android内存管理主要有:LowMemory Ki ...

  6. Android——内存管理基础

    内存收集概念 内存垃圾收集器(garbage collector) 概念:自定内存管理. 功能:分配内存.保证所有被引用的对象还在内存中.可以释放在运行的代码中不再引用的对象的内存. 垃圾收集器避免了 ...

  7. 深入理解Android内存管理原理(六)

    一般来说,程序使用内存的方式遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统.然而在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存是一个很有难度的工 ...

  8. Android Dalvikvm 内存管理理解

    网上非常多文件介绍了 jvm 内存管理的理论,但在 Dalvikvm 中,到底是怎样实现的. 这几天猛看了 Dalvikvm 的源码,说一下我的理解: 在大层面上讲跟理论一样,jvm 把内存分成了一些 ...

  9. Android内存管理机制

    相信一步步走过来的Android从业者,每个人都会遇到OOM的情况.如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力. 今天我们就谈谈在Android平台下内存的管理之道,开始 ...

随机推荐

  1. 在Ubuntu系统下编译arcsim仿真器

    首先,用tar zxvf arcsim-0.2.1.tar.gz 将软件包解压 然后,打开里面的INSTALL文件,按照里面的步骤一步一步安装库.Ubuntu13.04下 1.BLAS sudo ap ...

  2. nopi导出

    1.NPOI官方网站:http://npoi.codeplex.com/ 可以到此网站上去下载最新的NPOI组件版本 2.NPOI在线学习教程(中文版): http://www.cnblogs.com ...

  3. HTML表单之input元素的23种type类型

    摘自:http://www.cnblogs.com/xiaohuochai/p/5179909.html 了解HTML表单之input元素的23种type类型 随着HTML5的出现,input元素新增 ...

  4. [CF1095F]Make It Connected

    题目大意:给你$n(n\leqslant2\times10^5)$个点和$m(m\leqslant2\times10^5)$条边,第$i$个点点权为$a_i$.连接$u,v$两个点的代价为$a_u+a ...

  5. BZOJ1043:[HAOI2008]下落的圆盘——题解(配图片)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1043 Description 有n个圆盘从天而降,后面落下的可以盖住前面的.求最后形成的封闭区域的周 ...

  6. Tomcat启动时报org.springframework.web.context.ContextLoaderListener错误解决方案

    问题现象:新从svn上检出maven的项目maven+spring+springmvc项目在Tomcat启动时,报如下错误. 严重: Error configuring application lis ...

  7. Apache 403 错误解决方法-让别人可以访问你的服务器(转)

    有一次做好了一个效果放在自己电脑的服务器上,让同学查看(同处于校园网中),却不知apache一直显示403 错误,对方没有权限访问,我知道这应该是配置文件httpd.conf中的问题,网上搜了一下其他 ...

  8. Codeforces Round #394 (Div. 2)A水 B暴力 C暴力 D二分 E dfs

    A. Dasha and Stairs time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  9. im-switch -s ibus错误:Error: no configuration file "ibus" exists.

    在虚拟机上安装Ubuntu14.04 后安装ibus输入法,万万没想到在切换输入法的时候居然出错了! 无语了,再网上查了一下,这个错误出现的还是比较少的. 先说Ubuntu输入法(ibus)安装的一般 ...

  10. 【c#】winform 上传图片

    1.拖拽上传图片 1.1.后台代码中修改窗体属性,添加 AllowDrop = true 1.2.给窗体添加拖拽事件,在事件列表找到拖拽 双击即可: 在 DragDrop 生成的方法中添加代码如下: ...