Android中的内存,apk大小,方法数,线程等的限制研究
2016-01-26 21:41
1416 查看
1.内存限制
内存限制不同机器不同,取决于配置文件 /system/build.prop中的配置
dalvik.vm.heapstartsize=8m
dalvik.vm.heapgrowthlimit=96m
dalvik.vm.heapsize=256m
和这3个配置相关
dalvik.vm.heapstartsize 表示 初始内存大小是8m
dalvik.vm.heapgrowthlimit 表示标准内存大小是96m 一般应用都是这么大
dalvik.vm.heapsize 表示 在manifest配置文件中application标签下配置 android:largeHeap="true"时的内存大小
在代码中获取最大内存:
Runtime.getRuntime().maxMemory()
2.apk大小限制
apk安装包大小理论上没有限制。但是各个应用商店为了有大小限制google play 要求小于50M , 扩展包可以扩展到2g压力测试:经过压力测试800M的apk是没问题的只是安装的时间比较长。1.6G的apk包则把手机弄死机了。。。
3.方法数限制
google官方文档有描述Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
trouble writing output: Too many field references: 131000; max is 65536. You may try using --multi-dex option.
Android平台的Java虚拟机Dalvik在执行DEX格式的Java应用程序时,使用原生类型short来索引DEX文件中的方法。这意味着单个DEX文件可被引用的方法总数被限制为65536。
一个dex文件的 方法数 [0,65536]
如何避免方法过量:
1.减少大library依赖2.用proguard减少无用的方法
如果业务逻辑需要冲破限制怎么办:
如何冲破这个限制 使用多dex方案可以参考: http://blog.ubone.com/blog/2014/11/12/androidying-multidex/
4.最大线程数
android本身就是linux系统 所以查看命令和linux一样查看线程限制:
cat /proc/sys/kernel/threads-max
15193
查看所有限制:
ulimit -a
127|shell@hwt1701:/ $ ulimit -a time(cpu-seconds) unlimited file(blocks) unlimited coredump(blocks) unlimited data(KiB) unlimited stack(KiB) 8192 lockedmem(KiB) 65536 nofiles(descriptors) 1024 processes 7596 flocks unlimited sigpending 7596 msgqueue(bytes) 819200 maxnice 40 maxrtprio 0 resident-set(KiB) unlimited address-space(KiB) unlimited注:此命令 mac也适用
相关文章推荐
- android:showAsAction="never"是做什么用的
- 关于android中手势操作相关类GestureDetector类的分析
- Android 动态改变Layout的大小
- Android使用BitmapFactory.Options压缩图片解决加载大图片内存溢出
- Android开发之“点9”
- Android Studio:libpng warning: iCCP: Not recognizing known sRGB profile that has been edited解决办法
- android 自定义view实现 游戏血量条。带减血缓冲,颜色变化。
- Android中如何监听手机GPS打开状态
- 仿美团外卖效果
- android 逆向project smail 语法学习
- 自定义对话框两边有间距问题
- Android ListView点击展开收起效果(一)
- Android Wear 进阶 1 Adding Wearable Features to Notifications 添加手表特性到通知上
- Android平台下hook框架adbi的研究(下)
- Android平台下hook框架adbi的研究(上)
- Android之自定义角标(更新红点)——BadgeView
- [原] Jenkins Android 自动打包配置(转)
- Android开发学习总结——Android开发的一些相关概念(转)
- Android开发学习总结(五)——Android应用目录结构分析(转)
- Android layout_weight layout_width ,Listview单行特定textview省略