http://blog.csdn.net/jiaoyang623/article/details/8773445

今天群里有人讨论怎么给app分配超过100M的内存,有人亮出了largeHeap参数。搜搜资料写写代码,大概有些了解。以我的手机htc one x为例说明一下

先看机器的内存限制,在/system/build.prop文件中:

  1. dalvik.vm.heapsize=128m
  2. dalvik.vm.heapgrowthlimit=64m

这里,heapgrowthlimit就是一个普通应用的内存限制,用ActivityManager.getLargeMemoryClass()获得的值就是这个。而heapsize是在manifest中设置了largeHeap=true之后,可以使用的最大内存值。

下面做实验,不停地解码图片到内存,看多少会爆掉:

当largeHeap=false时:

  1. 04-08 17:18:50.169: E/dalvikvm(25460): Out of memory: Heap Size=60451KB, Allocated=51973KB, Limit=65536KB

当largeHeap=true时:

  1. 04-08 17:21:06.934: E/dalvikvm(24787): Out of memory: Heap Size=130851KB, Allocated=122377KB, Limit=65536KB

结论就是,设置largeHeap的确可以增加内存的申请量。但不是系统有多少内存就可以申请多少,而是由dalvik.vm.heapsize限制。

建议:Android官方给的建议是,作为程序员的我们应该努力减少内存的使用,想回收和复用的方法,而不是想方设法增大内存。当内存很大的时候,每次gc的时间也会长一些,性能会下降呦。

manifest中的largeHeap是干什么用的?的更多相关文章

  1. 添加Main-Class到manifest中

    Maven默认打包生成的jar是不能够直接运行的,因为带有main方法的类信息不会添加到manifest中(打开jar文件中的META-INF/MANIFEST.MF文件,将无法看到Main-Clas ...

  2. WIN10以后如果Manifest中不写支持WIN10的话,获取版本号的API获取的是6

    if TOSVersion.Major = 10 then  // 高版本的Delphi(比如Berlin)可以这样写 ShowMessage('Windows 10'); 或者: if Win32M ...

  3. Android Manifest 中 uses-feature 和 uses-permission的作用 关系和区别

    Manifest中的 <uses-permission android:name="android.permission.CAMERA" /> 和 <uses-f ...

  4. Intent官方教程(5)在manifest中给组件添加<Intent-filter>

    Receiving an Implicit Intent To advertise which implicit intents your app can receive, declare one o ...

  5. linux内核中宏container_of是干什么的?

    Linux Kernel Version 4.14 1. container_of是干什么的? 已知一个结构体中某个成员的首指针,那么就可以通过宏container_of来获得此结构体的首指针 2 先 ...

  6. 我的 Linux 主目录中的隐藏文件是干什么用的?

    作者: Alexander Fox 译者: LCTT MjSeven 在 Linux 系统中,你可能会在主目录中存储了大量文件和文件夹.但在这些文件之外,你知道你的主目录还附带了很多隐藏的文件和文件夹 ...

  7. Manifest中meta-data扩展元素数据的配置与获取

    简介-meta是什么 在AndroidManifest.xml清单文件中 我们有时会看到如下类似的<meta-data ... >元素开始的配置内容: <meta-data andr ...

  8. Android开发之修改Manifest中meta-data的数据

    代码 private void initFMMap() { ApplicationInfo appInfo = null; try { appInfo = this.getPackageManager ...

  9. manifest中读取<meta-data>

    meta-data在清单文件中主要有以下用法: <application>       <meta-data android:value="a1" android ...

随机推荐

  1. Jedis实现发布订阅功能

    Redis为我们提供了publish/subscribe(发布/订阅)功能.我们可以对某个channel(频道)进行subscribe(订阅),当有人在这个channel上publish(发布)消息时 ...

  2. Scala内部类

    注意:Java内部类从属于外部类,而Scala内部类从属于对象(外部类的实例本身).

  3. ECOS-Mongodb安装

    安装Mongodb服务 安装Mongodb服务 author :James,jimingsong@vip.qq.com since :2015-03-03 下载Mongodb安装包(64位哦) 安装M ...

  4. tomcat + jenkins启动tomcat后打开jenkins页面提示404错误的解决方案

    首先下载tomcat和jenkins,将下载的jenkins2.12 war放到tomcat的webapps文件夹下后执行/bin文件夹下的start启动后,打开http://localhost:80 ...

  5. WEB服务器:Apache、Tomcat、JBoss、WebLogic、Websphere、IIS的区别与关系

    1)Apache  免费,世界使用排名第一的Web服务器.它可以运行在几乎所有广泛使用的计算机平台上.Apache的特点是简单.速度快.性能稳定,并可做代理服务器来使用.Apache是以进程为基础的结 ...

  6. Network: Why 1472B length of ICMP?

    when ping, specifying the length of the packet by: ping localhost -l 32 Actually default is -l 32, s ...

  7. FileZilla客户端源码解析

    FileZilla客户端源码解析 FTP是TCP/IP协议组的协议,有指令通路和数据通路两条通道.一般来说,FTP标准命令TCP端口号是21,Port方式数据传输端口是20. FileZilla作为p ...

  8. 基于TCP协议的网络编程

    TCP通信协议是一种可靠的传输层协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成虚拟网络链路.一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信.Java使用Socke ...

  9. IDEA Mybatis 找不到映射器xml文件

    用IDEA新建了一个测试MyBatis工程,工程目录如下 其中config是MyBatis的配置文件,内容如下 <?xml version="1.0" encoding=&q ...

  10. Android中的eventBus传值

    第一步:在build.gradle中添加依赖dependencies { compile 'org.greenrobot:eventbus:3.0.0'} 第二步:创建一个 Event类: 注意:en ...