android--manifest中的largeHeap是干什么用的?

原创 2015年07月08日 15:51:45

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

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

[plain] view plaincopy
  1. dalvik.vm.heapsize=128m  
  2. dalvik.vm.heapgrowthlimit=64m  
这里,heapgrowthlimit就是一个普通应用的内存限制,用ActivityManager.getLargeMemoryClass()获得的值就是这个。而heapsize是在manifest中设置了largeHeap=true之后,可以使用的最大内存值。

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

当largeHeap=false时:

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

当largeHeap=true时:

[plain] view plaincopy
  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的时间也会长一些,性能会下降呦。

Jedis干什么用的

Jedis使用总结 前段时间细节的了解了Jedis的使用,Jedis是redis的java版本的客户端实现。 本文做个总结,主要分享如下内容: 【pipeline】【分布式的id生成器】【分布式锁【w...
  • zhongguomao
  • zhongguomao
  • 2016年08月02日 16:54
  • 428

DDR是什么,干什么用

严格的说DDR应该叫DDR SDRAM,人们习惯称为DDR,DDR SDRAM是Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。DDR内存是在SDRAM内存基础...
  • u010843358
  • u010843358
  • 2013年12月27日 11:01
  • 680

CC_DLL是干什么用的

在cocos2d-x中它是一个宏 1 #if defined(_USRDLL) 2 #define CC_DLL __declspec(dllexport) 3 #else ...
  • xfnjlove
  • xfnjlove
  • 2014年02月12日 15:54
  • 357

[Java]serialVersionUID是干什么用的?(一)

听大侠们说,偶尔看看Java源码,可以提升编程功力,赶紧屁颠屁颠下载了一份。先研究哪个类好呢?平常用最多的类就是字符串操作了,先看String类吧。上来就被这行代码吸引住了:private stati...
  • seabreezesuper
  • seabreezesuper
  • 2017年04月12日 13:30
  • 383

验证码是干什么用的

转载▼    论坛注册的时候,系统总会让我们输入验证码,通常是一个小方框里面几个歪歪扭扭的字母或数字。那么你有没有想过,验证码是干什么用的?     验证码是防止论坛恶意发言用的。...
  • u011646872
  • u011646872
  • 2014年01月15日 09:36
  • 386

IIS服务是干什么用的?

IIS(Internet Information Server,互联网信息服务)是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件...
  • tskyming
  • tskyming
  • 2013年05月24日 16:19
  • 4191

opendss干什么用的?

opendss是一款不错的电力软件,opendss画图,matlab调用opendss也是不错的。
  • ucas_123
  • ucas_123
  • 2017年11月01日 17:59
  • 11

CC_DLL是干什么用的

在cocos2d-x中它是一个宏 1 #if defined(_USRDLL) 2 #define CC_DLL __declspec(dllexport) 3 #else ...
  • carzyer
  • carzyer
  • 2013年07月01日 14:00
  • 572

Dubbo是什么?能做什么?

1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实...
  • houshaolin
  • houshaolin
  • 2017年07月30日 23:01
  • 186

nodejs是用来做什么的

转载自:https://www.zhihu.com/question/33578075 作者:厂长 链接:https://www.zhihu.com/question/33578075...
  • mozuncangtianbaxue
  • mozuncangtianbaxue
  • 2017年10月30日 15:48
  • 170
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android--manifest中的largeHeap是干什么用的?
举报原因:
原因补充:

(最多只允许输入30个字)