1. 有的说法是android app的最大堆栈只有16M  32M ...

实测,不准确, 准确的说话是 google原生OS的默认值是16M,但是各个厂家的OS会对这个值进行修改。

比如本人小米2S为例,这个值应该是96M。

 

Runtime rt=Runtime.getRuntime();
long maxMemory=rt.maxMemory();
log.i("maxMemory:",Long.toString(maxMemory/(1024*1024)));
這個可以直接得到app可使用的最大memory size算出來是MB, 获得的是heapgrowthlimit


先看机器的内存限制,在/system/build.prop文件中:
heapgrowthlimit就是一个普通应用的内存限制,用ActivityManager.getLargeMemoryClass()获得的值就是这个。
而heapsize是在manifest中设置了largeHeap=true 之后,可以使用的最大内存值
结论就是,设置largeHeap的确可以增加内存的申请量。但不是系统有多少内存就可以申请多少,而是由dalvik.vm.heapsize限制。
你可以在app manifest.xml加 largetHeap=true
可以申請較多的記憶體 ,但還是有機會爆掉.

     .....
     android:label="XXXXXXXXXX"
     android:largeHeap="true">
    .......


cat /system/build.prop   //读取这些值
getprop dalvik.vm.heapsize  //如果build.prop里面没有heapsize这些值,可以用这个抓取默认值
setprop dalvik.vm.heapsize 256m  //设置

-----------------------    build.prop 部分内容 ---------------------

dalvik.vm.heapstartsize=8m
dalvik.vm.heapgrowthlimit=96m
dalvik.vm.heapsize=384m
dalvik.vm.heaputilization=0.25
dalvik.vm.heapidealfree=8388608
dalvik.vm.heapconcurrentstart=2097152
ro.setupwizard.mode=OPTIONAL
ro.com.google.gmsversion=4.1_r6
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt

 

更多相关文章

  1. Android内存之VSS/RSS/PSS/USS
  2. 如何修改Android应用程序能够使用的默认最大内存值
  3. Android中内存占用的含义:(VSS,PSS,RSS,USS)
  4. Android App 内存泄露之资源
  5. Android计算图片占用内存
  6. [Android 性能优化系列]内存之基础篇--Android如何管理内存
  7. Android native内存分配2.0-private dirty memory不回收
  8. Android 进阶 内存泄漏常见案例(续)

随机推荐

  1. Android消息通信之无所不能的第三方开源
  2. Android十日学习路线
  3. Application Fundamentals
  4. Android中shape定义控件的使用
  5. android XMl 解析神奇xstream 四: 将复杂
  6. Android数据推送实现方案
  7. Android中String资源文件的format方法
  8. Qt for Android(安卓)调用android原生接
  9. android初级
  10. Android(安卓)开机图片/文字/动画 修改