内存抖动与OOM检测

Java 发表评论

检测优化内存抖动

        

    

内存抖动的问题我们可以通过Alloctions Tracker来进行排查。

在Android Studio中点击memory profiler中的红点录制一段时间的内存申请情况,再点击结束。

内存抖动在Android Profile中表现为:

        

对于基于内存抖动,我们主要需要注意

尽量避免在或者用的函数象,应该建移到外。

另外还有一个典的string拼接建大量小的象造成的内存抖

有时会发现频繁的调用Log打印日志,app会变卡顿。

Log.i(TAG,width+”x”+height);

里会生2个新,width+”x”width+”x”+height

TAGx编译时就存在的字符串常量池,所以不算新

所以一般来说我们对日志输Log进行控制,或者使用StringBuilder

OOM就是申的内存超Heap的最大

        OOM生不一定是一次申的内存就超了最大致oom的原因基本上都是一般情况,我的不良代下来的

        

        我们知道Android应用的进程都是从一个叫做Zygote的进程fork出来的。并且每个应用android会对其进行内存限制。我们可以查看

        

 查看/system/build.prop中的对应字段来查看我们app的最大允许申请内存。

-dalvik.vm.heapstartsize            

     堆分配的初始大小

-dalvik.vm.heapgrowthlimit       

    正常情况下dvm heap的大小是不会超过dalvik.vm.heapgrowthlimit的值。

-dalvik.vm.heapsize 

manifest中指定android:largeHeap为true的极限堆大小,这个就是堆的最大值。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *