Android设备出厂以后,Java虚拟机对单个应用的内存分配就固定下来了,超出这个值就会OOM。

这个属性值定义在 /system/build.prop中(以我的Nexus7为例)。

dalvik.vm.heapgrowthlimit=192m // heapgrowthlimit参数表示单个应用最大可用内存

这表示单个应用最大可用内存是192m,超出就会报OOM。这个内存溢出是针对dalvik堆而言,而不是native堆。

通过代码查看每个进程可用的最大内存,即heapgrowthlimit值:

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

int heapGrowthLimit = am.getMemoryClass(); // 192,以m为单位

dalvik.vm.heapstartsize=16m // heapstartsize参数表示堆内存分配的初始大小

堆内存分配的初始大小会影响整个系统对RAM的使用程度,和第一次使用应用的流畅速度。

它值越小,系统ram消耗越慢,但一些较大的应用一开始不够用,需要调用gc和堆调整策略,导致应用反应较慢。

它值越大,系统ram消耗越快,但是应用更流畅。

dalvik.vm.heapsize=512m // heapsize参数表示单个进程可用的最大内存

heapsize表示不受控情况下的极限堆,表示单个进程可用的最大内存。但如果存在heapgrowthsize参数,则以heapgrowthsize定义为最大内存。

android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机。这样设计的优点就是在单个程序崩溃的情况下不会导致整个系统的崩溃。

一般地,厂家针对设备的配置情况都会适当的修改/system/build.prop文件来调高这个值。随着设备硬件性能的不断提升,从最早的16M限制(G1手机)到后来的24m,32m,64m等,都遵循Android框架对每个应用的最小内存大小限制。

在应用开发中,如果要使用大堆,可在manifest文件中指定android:largeHeap为true,这样dalvik的堆内存可以达到heapsize。

android 应用程序内存上限,Android系统对应用的内存限制相关推荐

  1. ios 运行android应用程序,iOS与Android应用程序沙盒机制的研究与总结

    简介 复杂系统始终存在漏洞, 软件复杂性只会随着时间的推移而增加.无论您如何谨慎地采用安全编码实践并防范错误, 攻击者只需通过一次防御即可成功.虽然应用沙盒不能防止对你的应用的攻击, 但它确实最大限度 ...

  2. android 应用程序内存上限,Android APP的最大可用内存

    JAVA虚拟机对单个进程的最大内存进行了限制,如果超出这个值就会抛出OOM.这个属性值定义在/system/build.prop文件中,不同设备的这个值会不一样,各个厂商的ROM都会根据设备配置对这个 ...

  3. android应用程序框架图,Android系统框架图详解

    Android系统从下至上分为4层:Linux内核.Android程序库及Android运行时.Android应用程序框架,以及应用程序等. 图1-1 Android系统框架 1. Linux内核(L ...

  4. android应用程序的组件,Android基础之应用程序组件

    Android应用程序由若干个不同类型的组件组合而成,每一个组件具有其特定的安全保护设计方式,它们的安全直接影响到应用程序的安全.Android应用程序组件的主要类型有:活动(Activity),服务 ...

  5. Android添加程序背景颜色,Android小程序实现切换背景颜色

    本文实例为大家分享了Android实现切换背景颜色的具体代码,供大家参考,具体内容如下 (1)首先打开界面布局文件,添加两个Button xmlns:tools="http://schema ...

  6. android指南针程序,如何在Android上制作精确的指南针

    我的Android应用程序显示了世界上某个地方的方向,因此需要获得罗盘度. 这是我一直用来计算学位的代码: public void getDirection() { mySensorManager = ...

  7. android应用程序安全 pdf,Android应用安全开发.PDF

    Android应用安全开发 About Me • 沈沈明星 • 网易安全网易安全专专家家 Company Logo 议程 • Android基基础础 • AndroidAndroid应应用客用客户户端 ...

  8. 外部打开android应用程序,如何通过Android意图打开带有外部应用程序的3D-PDF文件...

    我已经在我的Android应用程序中下载了一个3D-PDF文件,我想通过Intent在外部应用程序中打开它.我正在使用"三维PDF阅读器"作为外部应用程序. 以下是Java的源代码 ...

  9. android应用程序判断题,Android开发工程师笔试判断题

    Android开发工程师笔试判断题20例 1.一个Activity就是一个可视化的界面或者看成是控件的容器.√ 2.Intent有很长的生命周期,是没有用户界面的程序,可以保持应用在后台运行,而不会因 ...

最新文章

  1. 高并发下秒杀商品,你必须知道的9个细节
  2. 湘潭大学计算机科学与技术录取分数线,2016年湘潭大学计算机科学与技术专业在湖南录取分数线...
  3. container_of(ptr, type, member)宏定义解析
  4. Lucene的评分(score)机制研究
  5. 如何用Python写一个Package
  6. NYOJ 927 The partial sum problem 【DFS】+【剪枝】
  7. boost::hana::replace_if用法的测试程序
  8. lr监控mysql_LR通过SiteScope监控mysql
  9. Linux cpu亲和力
  10. LOB字段存放在指定表空间 清理CLOB字段及压缩CLOB空间
  11. 数学趣题——猴子吃桃问题
  12. gis坐标|度分秒与十进制转换公式
  13. 单纤双向BIDI光模块的介绍
  14. matlab FFT 和IFFT
  15. JavaWeb项目----实现用户登录、注册、对商品信息进行的添加、删除、修改功能
  16. 酒店管理系统的E-R图和数据库模型图
  17. 大数据处理的关键技术(一)
  18. Linux-DNS服务器搭建
  19. 【NLP】NLP标注工具Brat的简单使用
  20. Python学习,从入门安装到测试,一篇到位!

热门文章

  1. 2021北京化工大学计算机学院招生网,北京化工大学2021年硕士研究生招生简章
  2. 我想试试一篇把svm搞的清白
  3. 十三、Mybatis
  4. 分布式系统事务一致性
  5. 基于WEB的办公自动化管理系统的设计与实现
  6. 阻止事件冒泡的两种方法
  7. 面向对象和C++基础—面向对象(构造与析构函数篇)
  8. 小狐狸ChatGPT付费创作系统1.6.1独立开源版 + 小程序VUE前端
  9. Excel实现简单多元线性回归
  10. 安卓 Spinner的用法