因调试某个重大问题,怀疑到了内存,专门写了个測试脚本。记录一下。

撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/37928823

一.调试准备

首先须要开启android系统的adb功能。start adbd

PC端 adb connect IP ADDRESS

假设 出现adb 异常能够尝试 adb kill-serveradb start-server

二.adb shell指令

1.查看总体内存

连上adb之后 能够通过 adb shell procrank 来查看当前的内存情况!

  • VSS - Virtual Set Size 虚拟耗用内存(包括共享库占用的内存)
  • RSS - Resident Set Size 实际使用物理内存(包括共享库占用的内存)
  • PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
  • USS - Unique Set Size 进程独自占用的物理内存(不包括共享库占用的内存)

2.查看指定进程的内存情况

adb shell dumpsys meminfo (包名或者PID)



3.占用内存最多的进程或线程

adb shell top

显示当前占用最高内存的10个进程,adb shell top -m 10

查看线程:adb shell top -t -m 10

三.shell 脚本

用于实时监控内存使用情况。而且保存log,我的shell script:

    #!/bin/bash   echo "Begain test memory">memeory_recode.txt  i=0  while true; do  adb shell procrank |grep 'RAM:'| tee -a memeory_record.txt  memoryinfo=$(tail memeory_record.txt -n 1)   #freememory=$memoryinfo | cut -d ' '-f 4  freememory=`echo "$memoryinfo"|awk -F ' ' '{print $4}'`  free=${freememory%?

} if [ $free -lt 8000 ];then echo -e "\033[31mFree Memory is $free KB Less than 8M\033[0m"| tee -a memeory_recode.txt adb shell top -m 10 -n 1 | tee -a memeory_recode.txt else echo "freememory == $free KB" fi i=$(($i+1)) sleep 1 var=$(date) echo "jscese display memory at $var the $i times" echo done

保存RAM信息的情况到 memeory_record.txt。而且解析freememory 的值,假设少于8000K就把占用内存最高的10个进程信息也保存进record。

四.build.prop中的Dalvik设置

dalvik.vm.heapstartsize=8m
dalvik.vm.heapgrowthlimit=96m
dalvik.vm.heapsize=256m
dalvik.vm.heaptargetutilization=0.75
dalvik.vm.heapminfree=512k
dalvik.vm.heapmaxfree=8m
dalvik.vm.lockprof.threshold=500
dalvik.vm.dexopt-flags=m=y

这几个属性代表了对dalvik的一些属性设置,能够在/dalvik/vm/alloc/HeapSource.cpp下找到原型:

struct HeapSource {/* Target ideal heap utilization ratio; range 1..HEAP_UTILIZATION_MAX*/size_t targetUtilization;/* The starting heap size.*/size_t startSize;/* The largest that the heap source as a whole is allowed to grow.*/size_t maximumSize;/** The largest size we permit the heap to grow.  This value allows* the user to limit the heap growth below the maximum size.  This* is a work around until we can dynamically set the maximum size.* This value can range between the starting size and the maximum* size but should never be set below the current footprint of the* heap.*/size_t growthLimit;/* The desired max size of the heap source as a whole.*/size_t idealSize;/* The maximum number of bytes allowed to be allocated from the* active heap before a GC is forced.  This is used to "shrink" the* heap in lieu of actual compaction.*/size_t softLimit;/* Minimum number of free bytes. Used with the target utilization when* setting the softLimit. Never allows less bytes than this to be free* when the heap size is below the maximum size or growth limit.*/size_t minFree;/* Maximum number of free bytes. Used with the target utilization when* setting the softLimit. Never allows more bytes than this to be free* when the heap size is below the maximum size or growth limit.*/size_t maxFree;...}

大体相应的意思例如以下:

1.heapstartsize——堆初始分配的大小,一个app启动的时候分配的内存大小

2.heapgrowthlimit——分配的一个堆最大的增长值,一个app最多分配的内存大小,超出的话应该会报outofmemory

3.heapsize——整个堆所能达到的最大值。也就是应用程序所能用的内存总和

4.heaptargetutilization——代表堆的利用率,实际使用与最大利用对照

5.heapminfree——堆大小的限制因素,在堆的大小没超过限定值的情况下 最小的空暇值

6.heapmaxfree——和最小相反,堆中最多能空暇的大小

7.lockprof.threshold——调试记录程序内部锁资源争夺的阈值,默认值是500

8.dexopt-flags——程序代码的校验与优化,下面来自百科:

dalvik.vm.dexopt-flags:
本參数控制Dalvik虚拟机的程序代码校验和优化。可填写的值有m、v和o。 m为标准选项。能够是m=y或m=n。若m=y则启用不安全代码的校验和托管代码的优化。兼容性和安全性最高,推荐使用。 v为校验选项,可与o并存。能够是v=a或v=n。若v=a则表示校验全部代码,v=n则关闭代码的校验。

 o为优化选项,可与v并存。能够是o=v或o=a。若o=v则表示优化以校验过的代码,o=a则表示优化全部代码。 比如: dalvik.vm.dexopt-flags=m=y dalvik.vm.dexopt-flags=v=n,o=v

注意,这个參数仅仅会影响到安装APK之后或初次使用APK时生成dex文件时有效。若整个系统(包含应用程序)为odex化,则无意义。

转载于:https://www.cnblogs.com/mengfanrong/p/5186418.html

Android——内存调试相关推荐

  1. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )

    文章目录 一.Android 系统中调试器进程内存流程 二.编译内存调试动态库以及调试程序 三.博客资源 一.Android 系统中调试器进程内存流程 修改游戏运行中的内存 , 游戏运行之后 , 游戏 ...

  2. Android内存泄漏分析及调试

    2019独角兽企业重金招聘Python工程师标准>>> Android内存泄漏分析及调试 分类: Android2013-10-25 11:31 5290人阅读 评论(5) 收藏 举 ...

  3. 【错误记录】Android 内存泄漏 错误排查记录 ( FinalizerReference 内存泄漏 )

    文章目录 一. 报错信息 二. 内存排查 三. 代码分析及修改 四. 不同版本说明 参考以下博客 : [Android 内存优化]Android Profiler 工具常用功能 ( 监测内存 | 内存 ...

  4. Android远程调试的探索与实现

    作为移动开发者,最头疼的莫过于遇到产品上线以后出现了Bug,但是本地开发环境又无法复现的情况.常见的调查线上棘手问题方式大概如下: 方法 优点 缺点 联系用户安装已添加测试日志的APK 方便定位问题 ...

  5. Android内存泄漏的检测流程、捕捉以及分析

    https://blog.csdn.net/qq_20280683/article/details/77964208 Android内存泄漏的检测流程.捕捉以及分析 简述: 一个APP的性能,重度关乎 ...

  6. Android 系统(91)---Android 平台调试

    Android 平台调试 注意:使用 adb 和 setprop 参数一起调试 Android 的某些方面.请注意,在 Android 操作系统的 O 版本之前,属性名称的长度上限为 32 个字符.也 ...

  7. Android 系统性能优化(37)---Android内存优化之一:MAT使用入门

    Android内存优化之一:MAT使用入门 MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查 ...

  8. android内存测试方法,Android内存测试方法.doc

    Android内存测试方法 标准: 1.Android手持设备最大进程内存阀值的50% 2.不允许出现内存泄漏 3.OOM要有异常处理机制 常用工具: 1. DDMS 2. MAT 3. Magnif ...

  9. android 内存测试

    引用:http://blog.csdn.net/ouyangtianhan/article/details/7228628 Android 内存泄漏调试 2011-04-01 17:01 by cpp ...

  10. 深入探索Android内存优化

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. 本篇是Android内存优化的进阶篇,难度会比较大,建议对内存优化不是非常熟悉的前仔细看看在 ...

最新文章

  1. mysql卸载后root还在_TMD终于把MySQL卸载掉了
  2. 算法---计数质数(Java)
  3. HHKB Programming Contest 2020 总结
  4. (转)基因芯片数据GO和KEGG功能分析
  5. php怎么引用表单元素,表单元素:最全的各种html表单元素获取和使用方法总结...
  6. Postman 报错SSL Error: Self signed certificate Disable SSL Verification
  7. 固态硬盘—国内视频行业的暂时救星?
  8. Android项目目录结构中各个文件夹的作用
  9. 「leetcode」47.全排列 II【回溯算法】详细图解!
  10. 支付宝小程序链接跳转异常处理方法
  11. threejs学习笔记:贴图实现木地板效果
  12. tableau-客户留存分析模型
  13. WeUI 简明入门指南
  14. PDF文档解析java Big Faceless
  15. 《OD学Oozie》20160807Oozie
  16. java Serializable
  17. 互联网摸鱼日报(2022-10-11)
  18. cmd连续ping记录断流情况
  19. java判断扑克牌是否为顺子_程序算法设计题,判断扑克牌中的顺子
  20. 第一章、华软代码生成器简单模板调制教程

热门文章

  1. pyhon基础(一)
  2. 塞尔达传说gba_【译介】《塞尔达传说:不可思议的帽子》2004年开发者访谈
  3. python数字合并提高_python-给定相关数字列表,合并相关列表以创...
  4. 判断Object对象属性的类型
  5. 使用Android实现水波纹动画,插件形式可直接引用
  6. html中播放的语法是什么,css语法是什么?
  7. [渝粤教育] 郑州财税金融职业学院 玩转e时代 参考 资料
  8. 【渝粤教育】国家开放大学2018年秋季 7160-22T卫生法学 参考试题
  9. 【渝粤教育】国家开放大学2018年春季 8618-21T燃气行业规范 参考试题
  10. 【渝粤教育】国家开放大学2018年春季 0408-21T管理学基础 参考试题