招聘网站开发工程师在线做爰视频网站
招聘网站开发工程师,在线做爰视频网站,网站建设投标ppt,阜南网站建设http://blog.csdn.net/vshuang/article/details/39647167 Android 内存管理 Memory Leak OOM 分析 单个应用可用的最大内存 Android设备出厂以后#xff0c;java虚拟机对单个应用的最大内存分配就确定下来了#xff0c;超出这个值就会OOM。这个属性值是定义在…http://blog.csdn.net/vshuang/article/details/39647167 Android 内存管理 Memory Leak OOM 分析 单个应用可用的最大内存 Android设备出厂以后java虚拟机对单个应用的最大内存分配就确定下来了超出这个值就会OOM。这个属性值是定义在/system/build.prop文件中的dalvik.vm.heapstartsize8m它表示堆分配的初始大小它会影响到整个系统对RAM的使用程度和第一次使用应用时的流畅程度。它值越小系统ram消耗越慢但一些较大应用一开始不够用需要调用gc和堆调整策略导致应用反应较慢。它值越大这个值越大系统ram消耗越快但是应用更流畅。dalvik.vm.heapgrowthlimit64m // 单个应用可用最大内存主要对应的是这个值,它表示单个进程内存被限定在64m,即程序运行过程中实际只能使用64m内存超出就会报OOM。仅仅针对dalvik堆不包括native堆dalvik.vm.heapsize384m//heapsize参数表示单个进程可用的最大内存但如果存在heapgrowthlimit参数则以heapgrowthlimit为准.heapsize表示不受控情况下的极限堆表示单个虚拟机或单个进程可用的最大内存。而android上的应用是带有独立虚拟机的也就是每开一个应用就会打开一个独立的虚拟机这样设计就会在单个程序崩溃的情况下不会导致整个系统的崩溃。注意在设置了heapgrowthlimit的情况下单个进程可用最大内存为heapgrowthlimit值。在android开发中如果要使用大堆需要在manifest中指定android:largeHeap为true这样dvm heap最大可达heapsize。不同设备这些个值可以不一样。一般地厂家针对设备的配置情况都会适当的修改/system/build.prop文件来调高这个值。随着设备硬件性能的不断提升从最早的16M限制G1手机到后来的24m,32m64m等都遵循Android框架对每个应用的最小内存大小限制参考http://source.android.com/compatibility/downloads.html 3.7节。通过代码查看每个进程可用的最大内存即heapgrowthlimit值ActivityManager activityManager (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);int memClass activityManager.getMemoryClass();//64以m为单位 或 $adb shell getprop dalvik.vm.heapgrowthlimit 192m $adb shell getprop dalvik.vm.heapsize 512m $adb shell getprop dalvik.vm.heapstartsize 16m http://hukai.me/android-training-managing_your_app_memory/ Android Training - 管理应用的内存 检查你应该使用多少的内存 正如前面提到的每一个Android设备都会有不同的RAM总大小与可用空间因此不同设备为app提供了不同大小的heap限制。你可以通过调用getMemoryClass())来获取你的app的可用heap大小。如果你的app尝试申请更多的内存会出现OutOfMemory的错误。 在一些特殊的情景下你可以通过在manifest的application标签下添加largeHeaptrue的属性来声明一个更大的heap空间。如果你这样做你可以通过getLargeMemoryClass())来获取到一个更大的heap size。 然而能够获取更大heap的设计本意是为了一小部分会消耗大量RAM的应用(例如一个大图片的编辑应用)。不要轻易的因为你需要使用大量的内存而去请求一个大的heap size。只有当你清楚的知道哪里会使用大量的内存并且为什么这些内存必须被保留时才去使用large heap. 因此请尽量少使用large heap。使用额外的内存会影响系统整体的用户体验并且会使得GC的每次运行时间更长。在任务切换时系统的性能会变得大打折扣。 另外, large heap并不一定能够获取到更大的heap。在某些有严格限制的机器上large heap的大小和通常的heap size是一样的。因此即使你申请了large heap你还是应该通过执行getMemoryClass()来检查实际获取到的heap大小。 转载于:https://www.cnblogs.com/onelikeone/p/7112184.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85595.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!