Android应用程序的默认最大内存值
2016-02-25 13:32
615 查看
原文: http://www.ziyouku.com/archives/android-applications-to-modify-the-default-maximum-memory-value.html
Android应用程序的默认最大内存值为16M,有些应用程序可能会出现内存溢出,譬如:
ERROR/AndroidRuntime(264): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
除了要检查修正代码之外,还可以考虑修改Android应用程序的默认最大内存值。
修改应用程序的默认最大内存有2种方法:
1、修改代码,适用于自己编译烧机:
当应用程序分配内存时,会调用到dalvik/vm/alloc/HeapSource.c中的 dvmTrackExternalAllocation()方法,继而调用到externalAllocPossible()方法,该方法要求当前堆已使用的大小(由currentHeapSize和hs->externalBytesAllocated构成)加上我们需要再次分配的内存大小不能超过堆的最大内存值,如果超过就会报错。
有两个地方决定了一个堆的最大内存:
1)dalvik/vm/Init.c中的
gDvm.heapSizeMax = 16 * 1024 * 1024; // Spec says 75% physical mem
2)frameworks/base/core/jni/AndroidRuntime.cpp中的
property_get("dalvik.vm.heapsize", heapsizeOptsBuf+4, "16m");
因此解决办法就是将以上2点中默认的16M改大一点,譬如32M。
2、修改配置文件,适用于烧机后的版本。
修改或添加/system/build.prop中的配置项: dalvik.vm.heapsize=32m
Android应用程序的默认最大内存值为16M,有些应用程序可能会出现内存溢出,譬如:
ERROR/AndroidRuntime(264): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
除了要检查修正代码之外,还可以考虑修改Android应用程序的默认最大内存值。
修改应用程序的默认最大内存有2种方法:
1、修改代码,适用于自己编译烧机:
当应用程序分配内存时,会调用到dalvik/vm/alloc/HeapSource.c中的 dvmTrackExternalAllocation()方法,继而调用到externalAllocPossible()方法,该方法要求当前堆已使用的大小(由currentHeapSize和hs->externalBytesAllocated构成)加上我们需要再次分配的内存大小不能超过堆的最大内存值,如果超过就会报错。
有两个地方决定了一个堆的最大内存:
1)dalvik/vm/Init.c中的
gDvm.heapSizeMax = 16 * 1024 * 1024; // Spec says 75% physical mem
2)frameworks/base/core/jni/AndroidRuntime.cpp中的
property_get("dalvik.vm.heapsize", heapsizeOptsBuf+4, "16m");
因此解决办法就是将以上2点中默认的16M改大一点,譬如32M。
2、修改配置文件,适用于烧机后的版本。
修改或添加/system/build.prop中的配置项: dalvik.vm.heapsize=32m
相关文章推荐
- Android Archtecturing...Clean Method
- android开发环境的搭建
- android studio怎么使用git
- 解决android studio 创建新项目后假死
- ]Android ADT SDK API 说明
- android中实现多个apk文件。
- Android Studio、GenyMotion、VirtualBox安装问题
- Volley的简要说明-android
- Android中popupWindow点击外面区域以及返回键,使popupWindow消失的方法
- Android Studio2.0模拟器最新预览版发布说明
- 编译Android 5.1.1源码
- Android安全攻防战,反编译与混淆技术完全解析(上)
- Android中.9图片的了解和制作过程
- Cordova cannot add Android failed with exit code ENOENT
- Android各个API版本
- Android 自用各种插件
- Android之MediaPlayer播放音乐并实现进度条实例
- 一个超炫的listview
- Android图片编辑
- Android 的Paint(画笔)及Canvas(画布)